代码随想录算法训练营Day 1 | 704. 二分查找、27. 移除元素

Apollo 9.0 参考线生成器 -- ReferenceLineProvider 在基于参考线的规划算法中,参考线是Planning一切工作的基础和前提,所以搞清楚参考线怎么来的就变得很重要。为此,首先需要了解Planning 与 Routing的交互,通过交互得到路径片段,这些路径片段就告诉我们该怎么走,再在此基础上生成参考线,最后使用不同的平滑算法对参考线进行平滑,得到一条光滑的参考线。 阅读详情

一、数组理论基础

文章链接:

知识点总结:

1. 数组在内存中的存储方式:

数组是存储在连续的内存空间相同类型数据的集合。通过下标索引获取下标对应的数据。 

2. 注意:1)下标从0开始;2)数组内存空间的地址连续

因为数组在内存空间地址连续,所以在增删元素的时候,需要移动其他元素的地址。

3. 数组元素不可以删除,只能覆盖。

二、704.二分查找

题目链接:704. 二分查找 - 力扣(LeetCode)

文章链接:代码随想录

视频链接:手把手带你撕出正确的二分法 | 二分查找法 | 二分搜索法 | LeetCode:704. 二分查找_哔哩哔哩_bilibili

1. 看到题目的第一想法:

没有注意到题目要求使用二分查找,于是打算使用暴力解法,即按索引遍历数组每一个元素,如果元素等于target,则返回其下标。

2. 看完代码随想录的想法:

二分查找需要涉及到Python中的双指针问题:

左闭右闭区间法:

        1)初始化左指针left和右指针right,使其分别指向数组的头元素下标、尾元素下标;

        2)写while循环防止指针溢出,即左指针如果大于右指针就跳出循环;

        3)写出中间指针middle的更新公式:middle = left + (right - left) // 2 或者 middle = (left+right) // 2

                更加推荐第一个公式的写法,如果left和right非常大容易发生整数溢出,而公式一因为先计算出差值,所以相对更加安全。

                注意:指针指向的是下标索引,是整数类型,所以不能(左指针+右指针)/2

        4)比较middle对应的数组元素与target二者的大小:

                如果target等于该元素,则返回的下标就是middle;

                如果target大于该元素,说明target在右区间内,那么将left指针移动到middle+1处;

                如果target小于该元素,说明target在左区间内,那么将右指针移动到middle-1处;

        5)最后如果循环结束没有找到目标值,则返回-1。

左闭右开区间法:

注意更新右区间时,使其等于middle,其余同上。

3. 实现过程中遇到的困难:

        1)循环函数使用混乱

        2)指针定义模糊不清

        3)刻意区分元素个数的奇偶,导致代码逻辑复杂

        4)没有考虑抛出异常、以及指针溢出的情况

4. 今日收获:

1. Python双指针:

        1)对撞指针:一个从头到尾,一个从尾到头,相向而行-->left = 0, right = len(nums)-1

        2)快慢指针:一个指针移动速度快、一个指针移动速度慢,常用于环形链表-->fast, slow

2. Python循环体:

三、27.移除元素

1. 看到题目的第一想法:

        1)暴力解法:

        遍历数组每一个元素,如果发现其等于val,则循环后面的元素依次向前覆盖,每遇到一个等于val的元素就循环一次;

        但是不知道如何统计不等于val元素的数组大小,因为覆盖不会删除原来的元素,所以数组大小并没有改变,无法返回移除元素后的数组大小。

        2)快慢指针法:

        用快指针遍历数组每个元素,遇到元素等于val的值则continue跳过,遇到不等于val的值则将其放入新数组,最后统计新数组的大小并返回。

2. 看完代码随想录的想法:

        1)初始化快慢指针均指向数组索引0的位置,并且设置数组大小size = len(nums)

        2)以指针是否溢出作为循环条件,若快指针大于数组大小则跳出循环

        3)比较快指针指向元素是否等于val:                

                若不等于则慢指针+1;

                若等于则慢指针不变。

                一次循环结束快指针无论如何也+1,继续遍历下一个元素的值,并进行比较。

        4)最后返回慢指针的数值即可。

3. 实现过程中遇到的困难:

        1)不会灵活利用指针将其作为一个计数工具,只想到将它作为下标索引使用

        2)快慢指针使用时需要防止指针溢出数组长度,要对其进行size设置与限定

四、977.有序数组的平方

1. 看到题目的第一想法:

        使用对撞指针,初始化左指针和右指针分别在数组的头和尾,然后以左指针小于等于右指针为循环终止条件进入循环,然后比较头尾指针指向的元素平方的大小,选取值较大的优先纳入新数组。

2. 看完代码随想录的想法:

        1)设置对撞指针,初始化使其分别指向数组的头和尾;设置新数组的指针,指向数组尾部;

定义存放元素的新数组。

        2)以左指针小于等于右指针为循环终止条件进入循环。

        3)比较头尾指针指向的元素大小:

                如果left指针指向的元素平方更大,则将其加入新数组,并且左指针向右移动一位;

                如果right指针指向的元素平方更大,则将其加入新数组,并且右指针向左移动一位。

                一次循环结束,新数组的指针向左移动一位。

        4)最后返回新数组的大小。

3. 实现过程中遇到的困难:

        1)不知道如何定义新数组及其新指针:

res = [float('inf')] * len(nums)

        2)新指针的元素存放应该是从后往前、从大到小。

        3)左右指针完成循环一次的移动方向并不一样。

K8S搭建(centos)四、安装K8S 每个人都有惰性,但不断学习是好好生活的根本,共勉! 阅读详情

相关推荐

从UC3842的FB脚到COMP脚:一次讲透反激电源两种光耦反馈接法的选择与实战

本文深入探讨了UC3842 PWM控制器在反激式开关电源设计中的两种光耦反馈接法:FB脚与COMP脚方案。通过分析信号极性差异、稳定性特点及动态响应性能,提供场景化选型指南和可靠性设计要点,帮助工程师优化反馈环路设计,提升系统稳定性与效率。特别针对TL431和PC817等关键元件在温度漂移、老化衰减等实际问题给出解决方案。

weixin_28717683的博客 705

代码随想录算法训练营Day1(LeetCode704二分查找;LeetCode27移除元素;LeetCode977 有序数组的平方)

这道题和二分法一样,需要理解好区间,因为有了二分查找的思路,这道题很快就AC了,不过看了题解还是有一些新的感受。看到这道题,之前做过啊,那么最简单就是平方再排序,不过也可以双指针解法,因为数组呈现中间小两边大的趋势。实际做的时候,还是出现了比较多的索引越界之类的错误,一定要注意。这道题没理解原地移动,初步的思路是将相同的元素与末尾交换,但是这样就需要新的元素。的概念,也就是说需要知道循环中的区间是什么意思,这里每次的区间就是搜索区间,这样来看。的更新取值还是写错了,之后看了讲解思路,强调了。

weixin_51001256的博客 710

Cadence Virtuoso IC617:从零构建传输门与反相器的Schematic设计实战

本文详细介绍了使用Cadence Virtuoso IC617进行传输门与反相器Schematic设计的完整流程,包括环境准备、原理图绘制、Symbol创建、仿真验证及实用技巧。通过分步指导和实战经验分享,帮助初学者快速掌握集成电路设计基础,提升EDA工具应用能力。

weixin_29194693的博客 600

代码随想录算法训练营Day1 | 704. 二分查找、27. 移除元素

设置左右区间,二分法缩小区间。设置左右区间,二分法缩小区间。left=right 有意义。left=right 无意义。left=right 有意义。left=right 无意义。

qq_24817679的博客 1786

unity pc运行包导入glb

本文介绍了在Unity中实现GLB/GLTF模型动态导入的方法。主要使用glTFast插件进行模型导入,配合StandaloneFileBrowser实现文件选择功能。文章提供了详细的插件安装方式(包括国内镜像源),并给出了核心导入脚本代码。脚本实现了模型加载、父对象设置、材质修复等功能,解决了常见的材质显示异常问题。该方法支持编辑器和PC平台,兼容不同版本的glTFastAPI,通过简易UI操作即可完成模型导入,适合需要运行时加载3D模型的Unity项目开发。

懒懒的蓝的博客 544

[nvidia-GB200-安装]ubuntu24.04高端GPU gb200 570.158.01驱动安装解读及gb200一键化安装脚本,复制即可安装

【代码】[nvidia-GB200]高端GPU gb200 驱动安装解读及gb200一键化安装脚本,复制即可安装。

jundao1997的专栏 874

代码随想录算法训练营Day1 | 704. 二分查找 27. 移除元素 977.有序数组的平方

n。

m0_74154872的博客 529

YOLOV26详解 从原理到部署

计算机视觉领域最具影响力的目标检测框架迎来重大里程碑。2026年1月,Ultralytics 正式发布 YOLOv26——这不是一次简单的版本迭代,而是一场面向边缘计算时代的架构重构。本专栏基于 Ultralytics 官方技术白皮书、YOLO Vision 2025 大会首发内容及国际前沿研究成果,系统拆解 YOLOv26 从算法原理到工程落地的全栈技术体系。与常规教程不同,我们聚焦与,帮助你在端侧 AI 部署的实战中掌握核心竞争力。

u012133341的博客 2022

代码随想录算法训练营Day1 : 704.二分查找、27.移除元素

算法:二分查找,移除元素

2201_75378283的博客 2191

别再让 AI 瞎写 SAP 代码了!这套 Claude Code Skill 的验证机制才是关键

本文深入解析了专为SAP CAP开发设计的AI辅助工具sap-cap-capire的技术架构。该工具采用四层设计:协议层集成MCP和LSP实现实时模型访问与语法检查;智能层通过4个专业化Agent(数据建模、服务开发等)分工协作;验证层确保代码质量;知识层存储文档模板。这种工程化设计解决了通用AI在CAP开发中面临的上下文不足、专业性缺失和代码质量保证等核心问题,通过本地化服务和实时反馈机制显著提升了开发效率。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 882

YOLO26涨点改进 | Conv篇/小目标改进 | AAAI 2025 FBRT-YOLO 两个轻量级FCM和MKP模块, 助力无人机航拍任务VisDrone、UAVDT和AI-TOD高效涨点

本文提出FBRT-YOLO26模型,通过引入两个轻量级模块FCM和MKP优化航拍图像检测性能。FCM模块通过特征互补映射解决小目标信息丢失问题,MKP模块利用多尺度卷积核增强目标感知能力。在VisDrone等数据集上的实验表明,该方法在精度和速度上均优于现有实时检测器。文章详细介绍了模块结构、核心代码实现及YAML配置文件修改方法,为航拍图像中的小目标检测提供了高效解决方案。该模型实现了检测精度与效率的良好平衡,具有实际应用价值。

Ai缝合怪、助力小伙伴高效发论文 369

代码随想录算法训练营day1|704.二分查找、27.移除元素

初始化左指针i为数组首,右指针j为数组尾。分别用循环来模拟左指针右移,右指针左移:左指针在nums[i]==val时停下,右指针在nums[j]!然后直接用右指针指向元素覆盖左指针指向元素,当左右相错结束循环,左指针一定指向最终数组尾。: 大家能把 704 掌握就可以,35.搜索插入位置 和 34. 在排序数组中查找元素的第一个和最后一个位置 ,如果有时间就去看一下,没时间可以先不看,二刷的时候在看。显然暴力法就是遍历数组,当nums[i]==val时,从下标i+1开始所有元素前移一位,并将len-1。

2302_79277225的博客 1295

NVIDIA Isaac Sim 入门教程(一)

文档分为以下几个部分: 简介、安装指南、API 文档、教程、手册和参考资料。简介部分是对 Omniverse Isaac Sim 的基本概述,以及它如何融入 NVIDIA Omniverse™ 生态系统。它还概述了 Omniverse Isaac Sim 的架构、工作流程和文档布局。

机器人控制与仿真应用 1万+

代码随想录算法训练营day1|leetcode704二分查找、27移除元素

初次查找范围是整个数组,每次查找范围[left,right]的中值,相等就直接返回下标right,不相等就向左右最大子区间的mid值进行移动,即让right=1/2*(left+right),或者让right=right+1/2*(right-left),如此不断实现一次次的移动,使查找范围变为原来的1/2,1/2的1/2,1/2的1/4……用了循环检索出和目标val相等的数组元素,nums[i],然后用下一个nums[i+1]覆盖掉nums[i],利用第二重循环,把后面的把前面的依次覆盖掉。

WEnyue4261的博客 1694

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

代码随想录算法训练营Day1 | 704.二分查找、27.移除元素

二分查找,双指针法

hero_jy的博客 1061

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

代码随想录算法训练营 Day 1|704.二分查找,27.移除元素

一开始自己写代码时,总是将具体的例子代入到代码中,结果就是测试用例过了,但提交时会有新的测试用例报错。如果一开始就明确了区间定义,那么只需要在关键的几个点(赋值以及循环条件判断)根据已有的区间定义写代码,就能保证正确。由于本题需要考察的就是删除数组元素方法的底层实现,所以不能直接用python已有的方法去做。

Jiahui_0020的博客 1257

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

【代码随想录】算法训练营day1 | 力扣704二分查找、27移除元素

代码随想录刷题营day1,数组部分的二分查找和移除元素。对应LeetCode704和LeetCode27

Maisidk的博客 1382

代码随想录算法训练营day1|704.二分查找|27.移除元素|977.有序数组的平方

力扣:704.二分查找|27.移除元素|977.有序数组的平方

w13848100362的博客 409

代码随想录算法训练营day1| 704. 二分查找 27. 移除元素

力扣704. 二分查找,27. 移除元素

qq_62455003的博客 1465

代码随想录算法训练营Day1|Leetcode704二分查找、27移除元素

Day1打卡!今日感想:这是我第一次真正意义上的刷算法,并且认认真真的记录博客。由于是第一天,还是有很大的新鲜感的,不管是思考解题还是撰写博客,都在不断尝试。希望在卡哥的带领下和各位录友们的陪伴下能够坚持下去💪!

m0_60979177的博客 2996

代码随想录算法训练营DAY1.704. 二分查找,27. 移除元素

力扣题目链接1.二分查找易错点:(1)while循环时,究竟是left

m0_74105654的博客 810

代码随想录算法训练营Day1 | LeetCode 704. 二分查找、27. 移除元素。

看到题目第一想法是用空间换时间:新建一个数组tempArray,指针遍历到非val元素时,就把这个元素加入新数组,并记录下来加入tempArray的元素的数量;最后把tempArray的元素逐个赋值给原数组。1)区间是选择左闭右开、还是左闭右闭,前者的right边界在更新世更新为middle,循环的条件是left < right,因为left = right时区间内没有元素;因为slowIndex的指针是新数组的右边界,而这个数组是左闭右开的。我们需要的是一个新的数组,他的元素都不包含要剔除的val元素。

apple_52404684的博客 763

代码随想录算法训练营DAY1 | 704. 二分查找、27. 移除元素

学习时长:2小时题目难度:还好今天第一天主要是熟悉刷题的感受,学习了二分法左闭右闭和左闭右开两种写法。(以后自己写还是用左闭右闭,左闭右开要多考虑一点 比较麻烦)。双指针每次听完讲解都恍然大悟,以后自己写又不回了,要多积累双指针能运用的题型。

qq_35904005的博客 1291

Day 1 代码随想录算法训练营 704. 二分查找 27. 移除元素

是一种更简单的算法,在我看来它像是查找和替换,两个指针一个用作查找需要删除的目标值(即快指针),当遇到目标值时,另一个指针(即慢指针)应当同时指向目标值的位置,快指针继续往下移,找到后续的新元素来把它替换到慢指针的位置。同时,慢指针还有记录新数组大小的功能,全部替换完成后,慢指针的下标即是新数组的大小。题目分析:要在数组中删除元素,首先应该明白数组的定义,因为数组的元素在内存地址中是连续的,不能真正意义上删除数组中的某个元素或者重新构建一个新的数组出来,而是将数组中需要删除的元素覆盖为后续的其他元素。

weixin_45093201的博客 359

【算法】代码随想录训练营Day1打卡,LeetCode 704二分查找 LeetCode27 移除元素

本文讲解了数组的数据结构以及力扣27题与704题,讲解了二分法和双指针法的数组解法

YuZzz1的博客 507

代码随想录算法训练营day1 704. 二分查找、27. 移除元素

首先数组的基本理论在代码随想录网站写的也很明白了,在这里贴出代码随想录的网站。

fzx12138的博客 1386
下一篇: 代码随想录算法训练营Day 2 | 209.长度最小的子数组、59.螺旋矩阵II、
Accept17
博客等级 码龄4年 479粉丝 43原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值