代码随想录第一天|704.二分查找 27.移除元素

news/2024/10/20 19:17:03/

704.

写法一:左右区间可以相等,left = right(左右区间的值都可以取到,这是更新left和right的依据)

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

写法二:左右区间不能相等,即为left<right

class Solution {
public:int search(vector<int>& nums, int target) {int left = 0;int right = nums.size();//因为right的边界值是不可取的,所有不要减一while(left<right){int middle = left + (right - left)/2;if(nums[middle]>target){right = middle;//此时middle为不可取的边界值,故middle因从为middle开始}else if(nums[middle]<target){left = middle + 1; }else{return middle;}}return -1;}
};

27.移除元素

写法一:暴力解法

class Solution {
public:int removeElement(vector<int>& nums, int val) {int size = nums.size();for(int i = 0;i<size;i++){//找到目标值if(nums[i]==val){for(int j = i + 1;j<size;j++){//将数组往前移动一位nums[j-1] = nums[j];}i--;//因为此时还未检查的数组值,已经替代了目标值的位置了,但不能跳过它//因为它可能也是目标值size--;}}return size;}
};

写法二:双指针法,快慢指针

注释:快慢指针,实质上是一个数组的自我复制,只不过里面有一些数据是不合格的,所有需要进行删除更新,而这时候,快慢指针的两者不同的作用就展示出来了,数组整体被分割为俩个部分

一为下标,二为数据,下标由slowIndex控制,数据由fastIndex控制,二者俩结合就形成了一个符合题意的新数组

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


http://www.ppmy.cn/news/1540597.html

相关文章

【Linux系列】在 Linux 中使用 `watch` 命令监控 Docker 容器状态

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

MySQL中的数字数据类型的一个概述

MySQL中的数字数据类型可以分为几大类&#xff0c;主要包括整数类型、浮点数类型和定点数类型、日期和时间类型&#xff0c;以及二进制类型中涉及数字的部分&#xff08;如BIT&#xff09;。下面是对这些类型的一个概述&#xff1a; ### 1. 整数类型 整数类型用于存储没有小数…

windows性能调优--基本性能优化

1. 使用任务管理器深入监控 打开任务管理器 我们可以通过按下Ctrl Shift Esc快捷键来打开任务管理器。 或者右键点击任务栏空白处&#xff0c;选择“任务管理器”。 2. 使用资源监视器深入分析 打开资源监视器 3. 清理磁盘空间 使用磁盘清理工具 按下Win R&#xff0c;输入…

直播电商的发展与创新:开源 AI 智能名片 S2B2C 商城小程序的融合机遇

摘要&#xff1a;本文深入探讨了直播电商作为内容电商的最新形式所具有的特点和优势&#xff0c;分析了其在移动通信技术推动下的蓬勃发展态势以及各大平台的布局情况。同时&#xff0c;引入关键词“开源 AI 智能名片 S2B2C 商城小程序源码”&#xff0c;阐述其与直播电商的融合…

JS通过递归函数来剔除树结构特定节点

最近在处理权限类问题过程中&#xff0c;遇到多次需要过滤一下来列表的数据&#xff0c;针对不同用户看到的数据不同。记录一下 我的数据大致是这样的&#xff1a; class UserTree {constructor() {this.userTreeData [// 示例数据{ nodeid: "1", nodename: "R…

Git 提交规范参考

Git 提交规范参考 feat 增加新的业务功能fix 修复业务问题/BUGperf 优化性能style 更改代码风格, 不影响运行结果refactor 重构代码revert 撤销更改test 测试相关, 不涉及业务代码的更改docs 文档和注释相关chore 更新依赖/修改脚手架配置等琐事workflow 工作流改进ci 持续集成…

Java集合(四)--treeset/treemap/章节练习题目/去重原理的解读和应用

文章目录 1.treeset结构2.treemap结构3.集合去重辨析总结4.对于arraylist的练习题目5.对于HashMap的练习题目6.第三点的去重运用7.HashSe练习题目 1.treeset结构 下面的这个就是对于这个treeset结构进行测试的一个程序&#xff0c;在这个里面&#xff0c;add表示的就是对于这个…

YOLOv11改进策略【卷积层】| SAConv 可切换的空洞卷积 二次创新C3k2

一、本文介绍 本文记录的是利用SAConv优化YOLOv11的目标检测网络模型。空洞卷积是一种在不增加参数量和计算量的情况下,通过在卷积核元素之间插入空洞来扩大滤波器视野的技术。并且为了使模型能够适应不同尺度的目标,本文利用SAConv将不同空洞率卷积结果进行结合,来获取更全…