常用方法

  • 暴力破解(费时间,效率低)
  • 快慢指针(双指针)

题目

1、移除元素
暴力破解思路:

  1. 使用两个for循环嵌套
  2. 第一个循环顺序遍历数组
  3. 当nums[i]==val 的时候 ,执行第二层循环,将后面的值覆盖前面的值。
  4. 执行第二个循环
  5. 被覆盖掉的值之后,下标要减1.( 因为下标i以后的数值都向前移动了一位,所以i也向前移动一位)
  6. 此时数组的大小-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;}
}

算法第一天——移除元素相关推荐

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

    理论基础 1.数组是存放在连续内存空间上的相同类型数据的集合 2.数组可以方便的通过下标索引的方式获取到下标下对应的数据 3.数组的在内存空间的地址是连续的,所以我们在删除或者增添元素的时候,就难免要 ...

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

    代码随想录算法Day1 | 704. 二分查找.27. 移除元素 Last edited time: April 5, 2023 11:27 AM 数据理论基础 数组是存放在连续内存空间上的相同类型数 ...

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

    704. 二分查找 题目链接:704. 二分查找 - 力扣(LeetCode) 第一天代码跑题了,做出来了但是没有使用二分法,看了讲解,对于左闭右闭和左闭右开还需要多思考,并没有完全理解.那就先总结一 ...

  4. 代码随想录算法训练营第一天 | 数组理论基础,704. 二分查找,27. 移除元素

    今日学习的文章链接如下: 代码随想录 (programmercarl.com) 代码随想录 (programmercarl.com) 704. 二分查找 自己看到题目的第一想法 拿到题目首先想办法,一 ...

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

    704.二分查找 题目链接:二分查找 思路: 1.从头开始遍历,首先如果不用二分查找法,最容易想到的就是直接暴力查找,时间复杂度为O(n)直接从头开始遍历一便就行.这样如果数据量庞大会运行时间较长. ...

  6. 第一天| 704. 二分查找、27. 移除元素。

    第一天| 704. 二分查找.27. 移除元素. 704.二分查找 1. 题目描述 题目链接:力扣704题 给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函 ...

  7. 【每日一算法】移除元素

    微信改版,加星标不迷路! 每日一算法-移除元素 作者:阿广 阅读目录 ? 题目 ? 解析 ? 完整代码 1 题目 给定一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素, ...

  8. JS刷题第一天| 704. 二分查找、27. 移除元素

    704. 二分查找 题目链接:力扣 文章讲解:代码随想录 视频讲解:手把手带你撕出正确的二分法 | 二分查找法 | 二分搜索法 | LeetCode:704. 二分查找_哔哩哔哩_bilibili 看 ...

  9. 打卡第一天 704. 二分查找、27. 移除元素

    打卡第一天| 704. 二分查找.27. 移除元素 704.二分查找 看到题目就想到曾经做过类似的,先取得左右边界,然后求中间值,如果要求的数在nums[middle]左边,就把右边界取middle- ...

最新文章

  1. Vm-Tools 安装指南
  2. 【Android 安装包优化】p7zip 源码交叉编译 Android 平台可执行程序 ( 下载 p7zip 源码 | 交叉编译 Android 中使用 7z 可执行程序 )
  3. 使用栈结构完毕四则运算
  4. OpenCASCADE绘制测试线束:拓扑命令之拓扑变换
  5. 如何下载最新版的 Adobe Flash Player
  6. 内核中_init,_exit中的作用
  7. Python 开发的 10 个小贴士,你知道几个?
  8. 使用ACE_SOCK_SEQPACK_Association获取socket连接的本地及远程IP端口信息
  9. Python-cvxopt库的使用(1)(解决LP问题)
  10. word vba 打开弹出msgbox,每隔10秒刷新一次域值。
  11. python爬虫scrapy连接mongodb_爬虫框架scrapy和数据库MongoDB的结合使用(二)实战
  12. 做大做强肉牛产业,生物资产解决方案助力乡村振兴
  13. Redis教程--基于docker搭建redis文档服务
  14. 【翻译】200行代码讲透RUST FUTURES (7)
  15. c语言循环语句试讲教案,C语言For循环试讲教案(7页)-原创力文档
  16. JVM内存空间组成+GC回收机制
  17. 44444444444444
  18. python print()函数控制输出格式
  19. 项目需求讨论-标题栏上的搜索功能
  20. java lifo 队列_java - 如何在LIFO模式下实现链接的阻塞队列 - SO中文参考 - www.soinside.com...

热门文章

  1. CC2591和CC2592区别
  2. 365天英语口语学习_14,接电话
  3. VTK笔记-计算MPR切面-vtkImageReslice类
  4. 实现类似 QQ音乐网页版 的单页面总结
  5. ROS机器人视觉避障部署流程
  6. 中职生计算机应用基础随堂练,华南理工计算机应用基础-随堂练习
  7. 一本通 1270:【例9.14】混合背包
  8. FB广告账号又被封?如何管理Facebook多个账号
  9. 撮合系统设计调研(1)
  10. 软件开发实训(720实训)——4从调研到设计,换发型产品设计的从0到1