算法第一天——移除元素
常用方法
- 暴力破解(费时间,效率低)
- 快慢指针(双指针)
题目
1、移除元素
暴力破解思路:
- 使用两个for循环嵌套
- 第一个循环顺序遍历数组
- 当nums[i]==val 的时候 ,执行第二层循环,将后面的值覆盖前面的值。
- 执行第二个循环
- 被覆盖掉的值之后,下标要减1.( 因为下标i以后的数值都向前移动了一位,所以i也向前移动一位)
- 此时数组的大小-1
class Solution {public int removeElement(int[] nums, int val) {int size = nums.length;for(int i = 0; i<nums.length; i++){if(nums[i]==val){for(int j = i+1;j<size;j++){nums[j-1]=nums[j];}}i--;size--;}return size;}
}
快慢指针思路
双指针法(快慢指针法): 通过一个快指针和慢指针在一个for循环下完成两个for循环的工作。
定义快慢指针
- 快指针:寻找新数组的元素 ,新数组就是不含有目标元素的数组
- 慢指针:指向更新 新数组下标的位置
- 定义一个慢指针、一个快指针。
- 快指针先走,如果不等于val,则将快指针所指的值赋值给慢指针。
- 然后慢指针的值+1;从而去掉重复的目标值。得到移除元素后的数组长度。
class Solution {public int removeElement(int[] nums, int val) {// (2)使用快慢指针int slowPoint = 0;for(int fastPoint = 0; fastPoint<nums.length; fastPoint++){if(nums[fastPoint] != val){nums[slowPoint] = nums[fastPoint];slowPoint++;}}return slowPoint;}
}
相似题目:
- 26.删除排序数组中的重复项
- 283.移动零
- 844.比较含退格的字符串
- 977.有序数组的平方
26.删除排序数组中的重复项
题解:
class Solution {public int removeDuplicates(int[] nums) {if(nums == null || nums.length ==1) return nums.length;// 快慢指针// 定义一个慢指针,用于更新int slowPoint = 0;int fastPoint = 0;// 定义一个快指针,用于遍历while( fastPoint<nums.length){if(nums[fastPoint] == nums[slowPoint]){fastPoint++;//如果相同就跳过,寻找下一个值}else{//如果不相同,就将慢指针+1,将不同的值,复制给slowPoint+1的位置。slowPoint++;nums[slowPoint]=nums[fastPoint];fastPoint++;}}return slowPoint+1;}
}
算法第一天——移除元素相关推荐
- 代码随想录算法训练营第一天|704二分查找 27移除元素
理论基础 1.数组是存放在连续内存空间上的相同类型数据的集合 2.数组可以方便的通过下标索引的方式获取到下标下对应的数据 3.数组的在内存空间的地址是连续的,所以我们在删除或者增添元素的时候,就难免要 ...
- 代码随想录算法训练营第一天 704 二分查找、27 移除元素
代码随想录算法Day1 | 704. 二分查找.27. 移除元素 Last edited time: April 5, 2023 11:27 AM 数据理论基础 数组是存放在连续内存空间上的相同类型数 ...
- 代码随想录算法训练营第一天| 704. 二分查找、27. 移除元素。
704. 二分查找 题目链接:704. 二分查找 - 力扣(LeetCode) 第一天代码跑题了,做出来了但是没有使用二分法,看了讲解,对于左闭右闭和左闭右开还需要多思考,并没有完全理解.那就先总结一 ...
- 代码随想录算法训练营第一天 | 数组理论基础,704. 二分查找,27. 移除元素
今日学习的文章链接如下: 代码随想录 (programmercarl.com) 代码随想录 (programmercarl.com) 704. 二分查找 自己看到题目的第一想法 拿到题目首先想办法,一 ...
- 代码随想录算法训练营第一天 | 704.二分查找、27.移除元素题目
704.二分查找 题目链接:二分查找 思路: 1.从头开始遍历,首先如果不用二分查找法,最容易想到的就是直接暴力查找,时间复杂度为O(n)直接从头开始遍历一便就行.这样如果数据量庞大会运行时间较长. ...
- 第一天| 704. 二分查找、27. 移除元素。
第一天| 704. 二分查找.27. 移除元素. 704.二分查找 1. 题目描述 题目链接:力扣704题 给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函 ...
- 【每日一算法】移除元素
微信改版,加星标不迷路! 每日一算法-移除元素 作者:阿广 阅读目录 ? 题目 ? 解析 ? 完整代码 1 题目 给定一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素, ...
- JS刷题第一天| 704. 二分查找、27. 移除元素
704. 二分查找 题目链接:力扣 文章讲解:代码随想录 视频讲解:手把手带你撕出正确的二分法 | 二分查找法 | 二分搜索法 | LeetCode:704. 二分查找_哔哩哔哩_bilibili 看 ...
- 打卡第一天 704. 二分查找、27. 移除元素
打卡第一天| 704. 二分查找.27. 移除元素 704.二分查找 看到题目就想到曾经做过类似的,先取得左右边界,然后求中间值,如果要求的数在nums[middle]左边,就把右边界取middle- ...
最新文章
- Vm-Tools 安装指南
- 【Android 安装包优化】p7zip 源码交叉编译 Android 平台可执行程序 ( 下载 p7zip 源码 | 交叉编译 Android 中使用 7z 可执行程序 )
- 使用栈结构完毕四则运算
- OpenCASCADE绘制测试线束:拓扑命令之拓扑变换
- 如何下载最新版的 Adobe Flash Player
- 内核中_init,_exit中的作用
- Python 开发的 10 个小贴士,你知道几个?
- 使用ACE_SOCK_SEQPACK_Association获取socket连接的本地及远程IP端口信息
- Python-cvxopt库的使用(1)(解决LP问题)
- word vba 打开弹出msgbox,每隔10秒刷新一次域值。
- python爬虫scrapy连接mongodb_爬虫框架scrapy和数据库MongoDB的结合使用(二)实战
- 做大做强肉牛产业,生物资产解决方案助力乡村振兴
- Redis教程--基于docker搭建redis文档服务
- 【翻译】200行代码讲透RUST FUTURES (7)
- c语言循环语句试讲教案,C语言For循环试讲教案(7页)-原创力文档
- JVM内存空间组成+GC回收机制
- 44444444444444
- python print()函数控制输出格式
- 项目需求讨论-标题栏上的搜索功能
- java lifo 队列_java - 如何在LIFO模式下实现链接的阻塞队列 - SO中文参考 - www.soinside.com...