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

RTX 4060笔记本也能跑!保姆级教程:用Ollama在Windows上部署DeepSeek-R1-8B模型 本文详细介绍了如何在RTX 4060笔记本上通过Ollama本地部署DeepSeek-R1-8B模型,提供从环境配置到性能调优的全流程优化指南。针对笔记本用户的显存、散热等问题,给出了量化模型选择、启动参数优化及散热解决方案,帮助用户在消费级硬件上高效运行大语言模型。 阅读详情

704 二分查找

题目链接:704.二分查找

class Solution {
public:
    int search(vector<int>& nums, int target) {
        int min,max,flag;
        min = 0;
        max = nums.size()-1;
        while(min<=max){
            flag = (min+max)/2;
            if(target==nums[flag]){
                return flag;
            }else if(target>nums[flag]){
                min = flag+1;
            }else if(target<nums[flag]){
                max = flag-1;
            }
        }
        return -1;
    }
};

这道题已经做过非常多遍了,所以举个例子比比划划很快就AC了。需要注意的是while的条件和min、max以及中值的选取,举几个例子试一试其实就挺清楚了。

27 移除元素

题目链接:27移除元素

参考学习链接:数组中移除元素并不容易

代码随想录移除元素

双指针法

快指针p:用来寻找旧数组中需要删除的 元素

慢指针q:则指向新数组所需要的元素

那么两个指针如何进行挪动完成元素的移除呢?

思路是:快指针采用for进行循环,一直在往后移,快指针还没遇到需要移除的元素的时候,q指针会跟着往后挪,不断的把旧数组中的元素放进新数组中。当快指针找到需要移除的元素时,慢指针就不会跟着快指针进行挪动,直到找到下一个可以更新的元素。

class Solution {
public:
    int removeElement(vector<int>& nums, int val) {
        int q=0;
        for(int p=0;p<nums.size();p++){
            if(nums[p]!=val){
                nums[q++]=nums[p];
            }
        }
        return q;
    
    }
};

 这道题几个月前做过一次,但是已经完全忘记双指针这个做法了,看完代码随想录中的动图后,又在草稿纸上演练了几回。因为想着把两个指针的挪动都包在一个个i的for循环里,,所以在p和q++放的位置这里思考了很久,是先挪呢还是先判断呢,是把q++放到判断里呢还是判断外呢,好像总是想不出来一个满足所有特殊情况的做法。

直到看到代码随想录的代码,豁然开朗。原来可以直接把p放进for循环,以p指针没有遇到需要移除的元素为条件,来对q进行更改。这样,也就不用管p远离q很远了,反正遇到不移除的q更新就好了。

感想

昨天旅游回来发现今天正好有一期开营,所以很巧地赶上了这一期。希望接下来两个月能完成代码随想录一刷~

加油!

【深度学习驱动流体力学】采集OpenFOAM仿真数据作为AI模型训练数据集与卷积神经网络搭建到预测(一站式完整代码实现) 采集OpenFOAM仿真数据作为AI模型训练数据集与卷积神经网络搭建到预测(一站式完整代码实现) 阅读详情

相关推荐

ADS1256单端vs差分接法详解:在STM32上实现8通道电压采集与4通道差分测量的实战对比

本文深入解析ADS1256在STM32平台上的单端8通道与差分4通道电压采集方案,详细对比两种接法的硬件设计、软件配置及性能差异。通过CubeMX配置SPI接口和优化数据读取时序,实现高精度测量,适用于工业监测等高要求场景。

weixin_29165465的博客 245

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

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

北天的博客 1158

MES系统领料申请、出库、确认到料各环节的处理

在WMS和MES系统协同的车间管理中,核心分工原则为:MES负责生产需求发起(领料申请)和结果确认(到料验收),WMS执行库存管理和物流作业。具体流程为:1)MES根据生产需求生成领料单推送至WMS;2)WMS完成拣货出库并调度AGV配送;3)车间在MES确认到料后解锁生产工序。系统边界严格限定:MES不参与库存/库位管理,WMS不干预生产决策。特殊场景(紧急补料、缺料异常等)通过标准化接口流程处理,确保生产与物流高效协同的同时保持账实一致。

做有价值的事,积累有价值的笔记! 586

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

内容较为简单。有几个小问题。704. 二分查找注意左闭右闭和左闭右开两种写法,想清楚边界问题。27. 移除元素思路上有一个巧点,用双指针,而不是暴力。977.有序数组的平方思路上有一个巧妙的地方,首先,肯定不是暴力,有一些方法,比如双指针。其次,双指针其实有不同的用法,比如:(1)指向0左右的最靠近0的正负数,向两边移动。新创建的用来放结果的数组中,指针从后往前走。(2)从两边开始,到中间会和。新创建的用来放结果的数组中,指针从前往后走。

2301_80094768的博客 957

进阶篇第8节:寄存器压力——寄存器溢出对性能的影响及优化

**摘要:GPU寄存器是最快的存储单元(1周期访问),但数量有限。过高的寄存器使用会导致溢出(变量存入慢速本地内存)或降低占用率(减少并发线程数),严重影响性能。优化方法包括复用变量、使用共享内存替代寄存器数组、限制寄存器数量(--maxrregcount)等。实际测试显示,将寄存器使用从48个降至24个可使性能提升37%。分析工具如Nsight Compute可帮助检测寄存器压力。面试常见问题涉及寄存器溢出的检测与优化策略。

PeterPan的博客 95

图神经网络实战(6)——使用PyTorch构建图神经网络

图数据集通常比简单的连接集合更加丰富,因为节点和边可以具有表示分数、颜色、单词等特征。包含这些额外信息在输入数据中对于生成最佳嵌入至关重要。在本节中,我们将使用 Cora 和 Facebook Page-Page 数据集,首先将它们视为表格数据集,观察香草神经网络在节点特征上的表现如何。然后,尝试在神经网络中加入拓扑信息,实现图神经网络 (Graph Neural Networks, GNN) 架构:一个同时考虑节点特征和边的简单模型。最后,我们将比较两种架构的性能。

盼小辉丶的博客 2万+

代码随想录算法训练营第一天|LeetCode704. 二分查找,LeetCode27. 移除元素,LeetCode977. 有序数组的平方

思路:在数组两头分别设一个指针,然后让target和nums[mid]相比较,如果小于,则将右指针的范围缩到mid的左边,也就是r=mid-1,并重新设一次mid;如果大于,同理。如果等于则返回当前mid的下标。如果在循环条件结束之前依然没有搜索到,则返回-1。

Liverpool0519的博客 1212

DOTS 性能基石:为什么传统 Unity 代码难以满足现代游戏需求?(DOTS 系列教程 · 第1篇)

本文探讨了Unity游戏开发中的性能优化问题,指出性能问题不应在最后才考虑,而应贯穿整个开发过程。文章分析了性能问题的三大表现(渲染开销、物理模拟、游戏逻辑),并解释了依赖硬件升级的不可行性。重点剖析了传统Unity代码性能低下的六大根源:垃圾回收卡顿、编译器优化不足、多核利用不足、数据结构和代码缓存不友好、过度抽象等问题。最后指出Unity项目中常见的反模式,如主线程垄断、内存碎片化等,为后续学习DOTS高性能架构解决方案奠定基础。

分享知识,拥抱变化 151

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

704. 二分查找给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。最简单的思路就是用一个循环暴力查找。这是使用二分法的前提,本题用二分法也更省时间。二分法并不难,但要关注边界处理,即要定义我们所找的目标元素target是处在一个[left,right]闭区间,还是处在(left,right]或[left,right)这种区间之中。

m0_52651829的博客 864

深入剖析RDMA Netlink:Linux内核中高效通信的基石

RDMA Netlink:Linux内核中高效通信控制的核心机制 RDMA技术通过绕过内核实现高速数据传输,但其管理控制仍需内核参与。drivers/infiniband/core/netlink.c文件作为RDMA子系统的心脏,构建了用户空间与内核间的高效通信桥梁。该模块采用模块化客户端架构,通过全局数组管理不同类型的RDMA功能,如设备管理、连接服务和链路层操作。从最初的全局锁到细粒度读写锁的演进,展现了Linux内核追求高性能的持续优化。同时,通过条件编译支持新旧内核版本和网络命名空间,体现了稳定性与

数字人生 239

Open3D (C++) 点云边界提取【2025最新版】

Compute the boundary points of a point cloud.The implementation is inspired by the PCL implementation. Reference:https://pointclouds.org/documentation/classpcl_1_1_boundary_estimation.html

点云侠的博客 871

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

704. 二分查找文章讲解:代码随想录视频讲解:手把手带你撕出正确的二分法 | 二分查找法 | 二分搜索法 | LeetCode:704. 二分查找_哔哩哔哩_bilibili思路:设置left,right下标初始值,while区间循环,mid指向(left+right)/2;目标值target<nums[mid],目标值在mid左半部分,改变right将区间缩小到左半部分;目标值target>nums[mid],目标值在mid右边半部分,改变left将区间缩小到右半部分;目标值target=nums[mi

m0_50413530的博客 709

Labview如何0基础自学快速入门?(纯干货帖)

讲解了如何学习Labview,Labview如何0基础入门,自学Labview的方法。什么都不会如何学好Labview的分享,欢迎关注文章~文章提供《Labview宝典》pdf下载,和《Labview虚拟仪器数据采集与通信控制》pdf下载

关注我,更多技术问题欢迎私聊~ 2万+

代码随想录算法训练营第一天|LeetCode704 二分查找、LeetCode27 移除元素、LeetCode977 有序数组的平方

有些代码写的有点重复目前只会使用最简单方法解题,尽可能考虑时间复杂度有时间了解一下排序算法今日两种双指针法都降低了时间复杂度,以后可以考虑使用场景(什么时候能使用双指针法)三道题目:循环区间不变量、快慢指针法、双指针法。

weixin_46078957的博客 579

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

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

day1 记录代码随想录第一天。

zhang1282882326的博客 2324

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

代码随想录算法训练营第一天 | LeetCode704.二分查找、LeetCode27.移除元素、LeetCode977.有序数组的平方

LeetCode

zhuabazhuabahuo的博客 990

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

代码随想录算法训练营第一天,数组理论基础,704二分查找,27移除元素,977有序数组的平方

题目要求时间复杂度为O(logn),那么当然也是二分法要求返回开始位置和结束为止,那么只需在nums[mid]==target的条件中进行修改,记录当前的下标值。就找两次,一次下标最大值,一次下标最小值。

Joesphine7的博客 445

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

重新审视了一下代码发现可以换一种理解方式,假设初始状态时所有元素都不等于val,即k=nums.size(),每检测到一个nums[i] == val,将nums[i]与nums[k-1]交换位置,同时缩小k的范围,最终就得到了长度为k的数组,且能够实现k以外的值全为val。这样做的时间复杂度为O(n),空间复杂度为O(1)。注意到平方最大的值一定位于nums的最左端或者最右端,想到使用low与high分别指向最左边的值与最右边的值,将最大的值存入result中,循环选出每一轮的最大值,最终得到结果。

weixin_64181248的博客 412

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

考虑边界条件要详细,常见的边界条件有,输入为空,输入为1,但是输入错误,返回值也是考虑边届问题的一部分。双指针进行夹闭,在多条件的情况下,可以对数组进行快速的查找,顺便进行排序,分类,移除等。977.有序数组的平方。

m0_71128641的博客 220

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

看完文章和视频后,明确了二分法的具体查找方案数组为有序数组,同时数组中无重复元素,因为一旦有重复元素,使用二分查找法返回的元素下标可能不是唯一的,这些都是使用二分法的前提条件。明确区间和缩小范围:[left, right]—还是[left, right)

weixin_39877528的博客 434

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

二分查找和移除元素的解题思路与答案

weixin_61344527的博客 2368

代码随想录算法训练营第一天数组理论基础、704. 二分查找、27. 移除元素、977.有序数组的平方

挑战一下算法学习,算法题目的讲解文章资料等来自代码随想录https://programmercarl.com/,本文主要分享python版本的随想录答案和自己的一些思考

weixin_47987373的博客 363

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

本文介绍了两个算法问题的解决方案:704.二分查找和27.移除元素。对于704.二分查找,提供了两种解决思路,一种是暴力遍历,时间复杂度为O(n),另一种是二分查找,时间复杂度为O(log n)。对于27.移除元素,也提供了两种解决思路,一种是暴力解法,时间复杂度为O(n^2),另一种是双指针法,时间复杂度为O(n)。

weixin_42797677的博客 1202

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

代码随想录算法训练营第一天| leetcode 704. 二分查找; leetcode 27. 移除元素。

Fanbin2021的博客 2004

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

思路:对数组排序想了2种思路,但是没写下去,第一种思路是数组中的第一个数和后面一个数做比较,如果后面的数小于第一个数就将这两数进行交换,但是等遍历完数组发现有一个数无法遍历到,[1,0,9,16,100],无法得到预期结果。思路:使用左右指针,分别指向数组的头尾下标,取中间数下标进行二分,直接判断中间数和目标值的大小关系然后移动左右指针,最后得出目标数的下标值。双指针:要定义左指针和右指针,以及新的数组和新数组的移动指针,当满足特定条件是,移动左右指针,将数据更新到新数组中,并移动新数组的指针。

m0_60451543的博客 233
上一篇: 面向对象程序设计复习笔记
下一篇: 代码随想录算法训练营第二天|977.有序数组的平方,209.长度最小的子数组,59.螺旋矩阵II
studyingbear
博客等级 码龄5年 20粉丝 19原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值