每日算法刷题Day4 5.12:leetcode数组4道题,用时1h
7. 704.二分查找
704. 二分查找 - 力扣(LeetCode)
思想
二分模版题
代码
c++:
class Solution {
public:int search(vector<int>& nums, int target) {int n=nums.size();int left=0,right=n-1;int res=-1;while(left<=right){int mid=left+((right-left)>>1);if(nums[mid]==target) return mid;else if(nums[mid]>target){right=mid-1;}else{left=mid+1;}}return res;}
};
python:
class Solution:def search(self, nums: List[int], target: int) -> int:n = len(nums)left, right = 0, n - 1res = -1while left <= right:mid = left + ((right - left) >> 1)if nums[mid] == target:return midelif nums[mid] > target:right = mid - 1else:left = mid + 1return res
8. 35.搜索插入位置
35. 搜索插入位置 - 力扣(LeetCode)
思想
还是二分查找,当时相对于上一题,题目条件变为“如果目标值不存在于数组中,返回它将会被按顺序插入的位置。”,所以要在初始化res=n
(数组里面查找不到肯定插入末端)(这个点一开始写没想好),同时查找过程中更新res
代码
c++:
class Solution {
public:int searchInsert(vector<int>& nums, int target) {int n = nums.size();int left = 0, right = n - 1;int res = n;while (left <= right) {int mid = left + ((right - left) >> 1);if (nums[mid] == target) {return mid;} else if (nums[mid] > target) {right = mid - 1;res = mid;} else {left = mid + 1;}}return res;}
};
python:
class Solution:def searchInsert(self, nums: List[int], target: int) -> int:n = len(nums)left, right = 0, n - 1res = nwhile left <= right:mid = left + ((right - left) >> 1)if nums[mid] == target:return midelif nums[mid] > target:right = mid - 1res = midelse:left = mid + 1return res
9. 69.x的平方根
思想
1.找x的平方根,不利用sqrt函数,就是从[0,x]
找,因为有序,可以优化为二分查找,跟第8题一样
2.非负整数x,包括0,left从0开始
3.c++中mid*mid
要变成long long,但是python没有这个问题
代码
c++:
class Solution {
public:int mySqrt(int x) {// return (int)sqrt(x);int left = 0, right = x, res = 1;while (left <= right) {int mid = left + ((right - left) >> 1);if ((long long)mid * mid == x)return mid;else if ((long long)mid * mid < x) {left = mid + 1;res = mid;} else {right = mid - 1;}}return res;}
};
python:
class Solution:def mySqrt(self, x: int) -> int:left, right = 0, xres = 0while left <= right:mid = left + ((right - left) >> 1)if mid * mid == x:return midelif mid * mid < x:res = midleft = mid + 1else:right = mid - 1return res
相似题
367. 有效的完全平方数 - 力扣(LeetCode)
10 27.移除元素(简单,学习,双指针)
27. 移除元素 - 力扣(LeetCode)
思想
维护区间[0mleft)
不包含val,所以长度为left
1.法一同向双指针:
左指针left为下一个要赋值的位置,右指针为当前待处理位置,如果不等于val,则赋值到left位置,left++。循环退出条件为right>=n
2.法二双向双指针:
左指针left为当前待处理位置,若值等于val,则把右指针right的值赋值过去,且right–,否则left++。循环退出条件left>right
3.法一优势在于维护原先相对顺序,而法二优势在于没有重复赋值
代码
法一:
c++:
class Solution {
public:int removeElement(vector<int>& nums, int val) {int n = nums.size();int left = 0;for (int right = 0; right < n; ++right) {if (nums[right] != val) {nums[left] = nums[right];left++;}}return left;}
};
python:
class Solution:def removeElement(self, nums: List[int], val: int) -> int:n = len(nums)left = 0for right in range(n):if nums[right] != val:nums[left] = nums[right]left += 1return left
法二:
c++:
class Solution {
public:int removeElement(vector<int>& nums, int val) {int n = nums.size();int left = 0, right = n - 1;while (left <= right) {if (nums[left] == val) {nums[left] = nums[right];right--;} else {left++;}}return left;}
};
python:
class Solution:def removeElement(self, nums: List[int], val: int) -> int:n = len(nums)left, right = 0, n - 1while left <= right:if nums[left] == val:nums[left] = nums[right]right -= 1else:left += 1return left
相关文章:
每日算法刷题Day4 5.12:leetcode数组4道题,用时1h
7. 704.二分查找 704. 二分查找 - 力扣(LeetCode) 思想 二分模版题 代码 c: class Solution { public:int search(vector<int>& nums, int target) {int nnums.size();int left0,rightn-1;int res-1;while(left<right){int midleft((…...
Day 15
目录 1.chika和蜜柑1.1 解析1.2 代码 2.对称之美2.1 解析2.2 代码 3.添加字符3.1 解析3.2 代码 1.chika和蜜柑 chika和蜜柑 TopK、堆、排序 1.1 解析 1.2 代码 #include <iostream> #include <vector> #include <algorithm> using namespace std; struct …...
脑机接口重点产品发展路径分析:以四川省脑机接口及人机交互产业攻坚突破行动计划(2025-2030年)为例
引言 随着人工智能和生物技术的飞速发展,脑机接口技术作为连接人类大脑与智能设备的桥梁,正在成为全球科技竞争的新焦点。2025年5月12日,四川省经济和信息化厅等8部门联合印发了《四川省脑机接口及人机交互产业攻坚突破行动计划(2025-2030年)》,为四川省在这一前沿领域的…...
leetcode 18. 四数之和
题目描述 和leetcode 15. 三数之和用同样的方法。有两个注意点。 一是剪枝的逻辑 这是和15. 三数之和 - 力扣(LeetCode)问题不同的地方。 无法通过这种情况: 二是整数溢出 最终答案 class Solution { public:vector<vector<int>…...
CentOS部署Collabora Online
1.安装Docker CentOS7安装Docker(超详细)-CSDN博客 2.拉取镜像 docker pull collabora/code:latest 3. 启动容器(直接暴露HTTP端口) docker run -d --name collabora -p 9980:9980 -e "usernameadmin" -e "password123456" -e …...
《Spring Boot 4.0新特性深度解析》
Spring Boot 4.0的发布标志着Java生态向云原生与开发效能革命的全面迈进。作为企业级应用开发的事实标准框架,此次升级在运行时性能、云原生支持、开发者体验及生态兼容性四大维度实现突破性创新。本文深度解析其核心技术特性,涵盖GraalVM原生镜像支持、…...
FFmpeg 与 C++ 构建音视频处理全链路实战(一)—— 环境配置与视频解封装
在数字媒体的浩瀚宇宙中,FFmpeg 就像一艘功能强大的星际战舰,承载着处理音视频数据的重任。而 C 作为一门高效、灵活的编程语言,犹如一位技艺精湛的星际工程师,能够精准操控 FFmpeg 战舰,完成各类复杂的音视频处理任务…...
什么是 NoSQL 数据库?它与关系型数据库 (RDBMS) 的主要区别是什么?
我们来详细分析一下 NoSQL 数据库与关系型数据库 (RDBMS) 的主要区别。 什么是 NoSQL 数据库? NoSQL (通常指 “Not Only SQL” 而不仅仅是 “No SQL”) 是一类数据库管理系统的总称。它们的设计目标是解决传统关系型数据库 (RDBMS) 在某些场景下的局限性…...
AI需求分析话术 | DeepSeek R1
运行环境:jupyter notebook (python 3.12.7) Dash 场景: 收集了小程序的问题点和优化建议,一键AI分析,快速排优先级 指令话术: 对收集的小程序问题点和建议,做需求分析并总结形成报告,报告结构…...
【Redis】键值对数据库实现
目录 1、背景2、五种基本数据类型对应底层实现3、redis数据结构 1、背景 redis是一个(key-value)键值对数据库,其中value可以是五大基本数据类型:string、list、hash、set、zset,这五大基本数据类型对应着不同的底层结…...
MySQL 8.0 OCP 英文题库解析(三)
Oracle 为庆祝 MySQL 30 周年,截止到 2025.07.31 之前。所有人均可以免费考取原价245美元的MySQL OCP 认证。 从今天开始,将英文题库免费公布出来,并进行解析,帮助大家在一个月之内轻松通过OCP认证。 本期公布试题16~25 试题16:…...
互联网大厂Java求职面试:优惠券服务架构设计与AI增强实践-1
互联网大厂Java求职面试:优惠券服务架构设计与AI增强实践-1 在一间简洁明亮的会议室里,郑薪苦正面对着一位技术总监级别的面试官,这位面试官拥有超过十年的大型互联网企业经验,以技术全面性与落地能力著称。 第一轮面试…...
object的常用方法
在面向对象编程中,Object 类是所有类的根类,它提供了一些基本的方法,这些方法可以被所有对象继承和使用。以下是一些在 Java 中 Object 类的常用方法,以及它们的作用和使用示例: 1. equals(Object obj) 作用ÿ…...
解决vue create 创建项目,不能使用上下键选择模板的问题
使用 git bash 创建vue项目时候,无法使用上下键盘按键选择创建模板 处理: 1.当前界面,按CTR C终止创建命令; 2.使用 alias vuewinpty vue.cmd,更新命令环境; 3.再次使用 vue create demo创建项目…...
AI Agent开发第64课-DIFY和企业现有系统结合实现高可配置的智能零售AI Agent(上)
开篇 我们之前花了将近10个篇章讲Dify的一些基础应用,包括在讲Dify之前我们讲到了几十个AI Agent的开发例子,我不知道大家发觉了没有,在AI Agent开发过程中我们经常会伴随着这样的一些问题: 需要经常改猫娘;需要经常改调用LLM的参数,甚至在一个流程中有3个节点,每个节点…...
3.Redis-set集合类型
1.用集合做差集、并集(共同关注)、交集...
软考 系统架构设计师系列知识点之杂项集萃(57)
接前一篇文章:软考 系统架构设计师系列知识点之杂项集萃(56) 第93题 美国著名的卡内基梅隆大学软件工程学研究所针对软件工程的工程管理能力与水平进行了充分研究,提出了5级管理能力的模式,包括临时凑合阶段、简单模仿…...
Cabot:开源免费的 PagerDuty 替代品,让系统监控更简单高效
在当今复杂的IT环境中,及时发现并解决系统问题至关重要。而Cabot作为一款开源免费的监控工具,为开发和运维团队提供了强大而简单的解决方案。本文将详细介绍Cabot的核心功能、优势以及快速部署方法,帮助你更好地保障系统稳定性。 Cabot简介 Cabot是一个功能类似PagerDuty的开…...
AI中的MCP是什么?MCP的作用及未来方向预测 (使用go-zero 快速搭建MCP服务器)
AI是当下最热的风。在当今AI技术飞速发展的时代,AI的应用已经渗透到我们日常生活的方方面面。然而,随着AI系统的复杂性不断增加,如何让AI具备更强的自主性和灵活性成为了业界关注的焦点。这就引出了Model Context Protocol(MCP&am…...
字节开源FlowGram与n8n 技术选型
字节跳动开源的 FlowGram 和 n8n 是两款功能强大但定位不同的工作流编排工具,以下是两者的技术选型对比分析,结合其核心特性、适用场景和优劣势: 一、核心特性对比 维度FlowGram(字节开源)n8n定位面向AI场景的可视化工…...
面试专栏-03-Git的常用命令
二、Git常用命令学习 git本质上,就是一个 git类型的文件夹 1、基础配置信息 git -v:查看 git 版本信息 git config --global user.name "dz.cn":配置用户名,注意,这里配置的用户名在进行版本提交时…...
使用 Syncthing 在两台电脑之间同步文件:简单教程
🧩 什么是 Syncthing? Syncthing 是一个开源、跨平台、点对点的文件同步工具,类似于 Dropbox,但不依赖第三方服务器。它直接在你的设备之间同步文件,更加安全、可控,非常适合个人或团队内部使用。 支持操…...
spdlog日志格式化 标志全指南
一、spdlog格式化核心机制 SPDLOG通过set_pattern()函数实现灵活的日志格式定制,该函数解析用户提供的格式字符串,生成包含时间、源代码、进程等信息的结构化日志。其底层由pattern_formatter类处理,通过识别%标志符的组合动态生成格式化器对…...
http接口性能优化方案
设计高响应时间的HTTP查询接口(<80ms) 要实现跨机房调用的HTTP接口并保持响应时间在80ms以下,确实面临多个技术挑战。以下是关键点和解决方案: 主要技术难点 网络延迟:跨机房物理距离导致的传输延迟 TCP握手/挥手…...
Express知识框架
一、核心概念 1. Express 简介 Node.js 的 Web 框架,提供 HTTP 服务器封装 轻量级但灵活,支持中间件扩展 基于路由,支持 RESTful API 和传统 MVC 架构 无内置 ORM 或模板引擎,但可集成第三方库 2. 核心对象 express() - 创建…...
调出事件查看器界面的4种方法
方法1. 方法2. 方法3. 方法4....
Bash 执行命令的基本流程
是的,Bash 在执行外部命令(如 ls、grep 等非内置命令)时,确实会调用 exec 系列函数来实现进程程序替换。以下是其底层机制的分步解析: 1. Bash 执行命令的基本流程 当在 Bash 中键入一个命令(例如 ls -l&a…...
我们来学mysql -- 安装8.4版本
8.4版本 下载解压用户目录&用户权限my.cnf初始化普通启动safe启动检查启动用户登录远程登录用户root% 下载 地址选择安装包 查看OS位数 getconf LONG_BIT 二进制安装包说明 二进制包的文件名会包含 linux 或 glibc 等字样如:mysql-8.4.4-linux-glibc2.28-x86_…...
Java MVC架构在当今时代的技术解析
一、前言 MVC(Model-View-Controller)架构作为经典的设计模式,经历了数十年的演进。尽管新兴技术层出不穷,Java MVC仍然在企业级开发中占据重要地位。 二、Java MVC核心优势 1. 模块化分层设计 职责分离:数据层&…...
FPGA----基于ZYNQ 7020实现定制化的EPICS程序开发
引言:基于前文,我们在FPGA侧实现了一些外设驱动功能,并将其导出为hdf生成了他的petalinux,借助ALINX的Debian8做了我们自己的根文件系统。现在,我们需要在petalinux下开发一个epics程序,可以调用我们FPGA的驱动。 1、整体程序架构 注意:我们基于ALINX的根文件系统是不完…...
配置hosts
打开文件 右键点击「记事本」或其他文本编辑器,选择「以管理员身份运行」。 打开路径:C:\Windows\System32\drivers\etc\hosts 添加映射 在文件末尾添加一行,格式为: plaintext IP地址 域名例如: plaintext 127.0.…...
Blender 入门教程(一):模型创建
一、前言 大家都知道,现在 AIGC 领域日新月异,今天 AI 大模型能生成粗糙的 3D 模型,明天就能做成商业级的 3D 模型,但是如果想要一些细节上也有的,还是需要自己手动对模型的布线进行调整,然后再蒙皮等等。…...
JVM对象头中的锁信息机制详解
JVM对象头中的锁信息机制详解 Java中的对象锁机制是高性能并发的基石,而这一切的底层实现都离不开对象头中的 Mark Word 字段。本文将系统梳理JVM对象头中锁信息的存储与演化机制,解析锁升级与批量重偏向优化原理,并通过JOL工具实战验证对象…...
需要低调使用的网盘小工具
周末总是过得飞快,转眼间周一又要来临。今天就不多说,直接给大家分享一款实用的小软件! 软件介绍 今天给大家带来一款网盘转存工具——BaiduPanFilesTransfers。 这款工具是某知名网盘的批量转存利器。软件作者已经编写了一份非常详细的说明…...
js fetch流式请求 AI动态生成文本,实现逐字生成渲染效果
开启流式请求:向后端接口发起普通的 fetch,它会返回一个包含 ReadableStream 的 Response 对象获取流式读取器:调用 response.body.getReader() 获取一个 ReadableStreamDefaultReader 实例循环读取数据块:在 while(true) 循环或 …...
软考教材重点内容 信息安全工程师 第24章 工控安全需求分析与安全保护工程
24.1.1 工业控制系统概念及组成 工业控制系统是由各种控制组件、监测组件、数据处理与展示组件共同构成的对工业生产过程进行控制和监控的业务流程管控系统。工业控制系统通常简称工控系统(ICS)。工控系统通常分为离散制造类和过程控制类两大类,控制系统包括 SCADA…...
BGP基础实验
一、配置思路 AS200 内部路由由 OSPF 负责,使 AR2 ~ AR5 内部环回地址可达。 各 AS 之间通过 BGP 实现跨域路由互通。 通过 import-route ospf 语句将 OSPF 路由导入 BGP,再由 BGP 向外通告。 使用 network 命令通告本地环回地址。 AR1 <Huawei…...
遭遇DDoS攻击为什么不能反击回去?
遭遇DDoS(分布式拒绝服务)攻击时,不能直接“反击回去”的原因涉及技术、法律、道德和实际操作的多个层面。以下是详细分析: 1. 技术难题:难以定位真正的攻击者 分布式攻击源:DDoS攻击的特点是流量来自全球各…...
专题二:二叉树的深度搜索(二叉树剪枝)
以leetcode814题为例 题目分析: 也就是当你的子树全为0的时候就可以剪掉 算法原理分析: 首先分析问题,你子树全为0的时候才可以干掉,我们可以设递归到某一层的时候如何处理 然后抽象出三个核心问题 也就是假设我们递归到第2层…...
服务器共享文件夹如何实现外网访问
一、远程访问共享文件需求 有些企业在内网服务器上存储了很多重要工作文件,这些文件共享后需要在外网被员工访问 快解析帮助用户远程访问企业内网服务器共享文件夹 二、快解析实现远程共享文件夹的方法 下面简单介绍一下通过内网穿透快解析实现自己服务器上的共享…...
git|gitee仓库同步到github
参考:一次提交更新两个仓库,Get 更优雅的 GitHub/Gitee 仓库镜像同步 文章目录 进入需要使用镜像功能的仓库,进入「管理」找到「仓库镜像管理」选项,点击「添加镜像」按钮绑定github绑定成功后再次点击添加镜像如何申请 GitHub 私…...
1.Redis-key的基本命令
(一)Redis的基本类型 String,List,Set,Hash,Zset 三种特殊类型:geospatial(地理空间数据)、hyperloglog[基数估算(去重计数)]、bitmaps(位图&…...
配置Hadoop集群环境-使用脚本命令实现集群文件同步
在 Hadoop 集群环境中,确保各节点配置文件一致至关重要。以下是使用 rsync 结合 SSH 实现集群文件同步的脚本方案,支持批量同步文件到所有节点: 1. 前提条件 所有节点已配置 SSH 免密登录主节点(NameNode)能通过主机…...
搭建高可用及负载均衡的Redis
搭建高可用及负载均衡的Redis系统是确保数据存储和访问高效且可靠的关键。本文将详细介绍如何配置高可用的Redis集群,并通过负载均衡实现性能优化。 高可用Redis架构设计 高可用性是指系统在部分组件失效时仍能继续运行。对于Redis,高可用架构通常包括…...
Hepatology | 南京鼓楼医院余德才团队:从「无药可用」到「精准打击」!肝癌脂肪代谢分型让3类患者各有生路!
文章标题:Multiomics identifies metabolic subtypes based on fatty acid degradation allocating personalized treatment in hepatocellular carcinoma 发表期刊:Hepatology 影响因子:12.9 客户单位:南京市鼓楼医院 百趣提…...
【日撸 Java 三百行】Day 11(顺序表(一))
目录 Day 11:顺序表(一) 一、关于顺序表 二、关于面向对象 三、代码模块分析 1. 顺序表的属性 2. 顺序表的方法 四、代码及测试 拓展: 小结 Day 11:顺序表(一) Task: 在《数…...
配置集群-日志聚集操作
日志聚集是指将分布式集群中各个节点上的应用程序日志收集并汇总到一个集中的位置,方便后续的查看、分析和管理。在 Hadoop 和 Spark 集群中,日志聚集是一项重要的功能,下面分别介绍如何在这两个集群中配置日志聚集操作。 Hadoop 集群日志聚…...
node版本.node版本、npm版本和pnpm版本对应
报错: ERR_PNPM_META_FETCH_FAIL GET https://registry.npmmirror.com/rollup: Value of "this" must be of type URLSearchParams node版本 Node.js — Node.js Releases node和pnpm对应关系 Installation | pnpm 参考 NVM管理node版本.node版本、…...
电商物流管理优化:从网络重构到成本管控的全链路解析
大家好,我是沛哥儿。作为电商行业,我始终认为物流是电商体验的“最后一公里”,更是成本控制的核心战场。随着行业竞争加剧,如何通过物流网络优化实现降本增效,已成为电商企业的必修课。本文将从物流网络的各个环节切入…...
Java学习手册:客户端负载均衡
一、客户端负载均衡的概念 客户端负载均衡是指在客户端应用程序中,根据一定的算法和策略,将请求分发到多个服务实例上。与服务端负载均衡不同,客户端负载均衡不需要通过专门的负载均衡设备或服务,而是直接在客户端进行请求的分发…...