
LeetCode7_数组双指针_有序数组元素去重、数组移除指定元素
发布日期:2021-05-07 20:40:32
浏览次数:11
分类:技术文章
本文共 1675 字,大约阅读时间需要 5 分钟。
题目1-有序数组元素去重
给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。
不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/remove-duplicates-from-sorted-array 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。我的解答
- 思路
嵌套循环,外层控制元素,判断 当前位置的 元素 是否和 近邻 的元素重复
若重复,进入内层循环,将 后面的全部元素 整个向前覆盖一步,即删除 重复的第一个元素
需要注意的是:
- 当删除一个元素之后,数组的长度会减1,最后面的元素会不断复制元素,需要 统计 出现的重复 元素的个数(或者说是 整体移动的次数count,从而外层循环不在处理 整体移动 产生的 重复值)
- 还需要处理 当连续出现 3个、4个或者更多的 重复元素的情况,每次移动之后,外层循环的
i
需要保持当前位置 即加上i --
class Solution { public int removeDuplicates(int[] nums) { int count = 0; for(int i = 0;i
题解之双指针
之前遇到的 链表双指针,判断链表是否有环(快慢指针) 、删除链表倒数第n个节点(间隔指针)
参考往期博客:
注意题目给的是有序数组,这样才能实现
思路
i
作为下标 指针 处理 有效的元素,永远指向 最后一个有效元素j
作为另一个下标指指针 跑在i
之前,- 遇到 和
nums[i]
相等的元素,就 直接跳过,不用处理,对应i
和j
的距离加一 - 遇到和
nums[i]
不相等的元素,就 i ++ 为有效元素找位置,然后nums[i] = nums[j];
- 遇到 和
class Solution { public int removeDuplicates(int[] nums) { if(nums.length == 0){ return 0; } //双指针 int i = 0; for(int j = 1;j
题目2-数组移除指定元素
给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。
不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。
元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/remove-element 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。我的解答
有了双指针的思想,果然好实现多了,和上面的基本一样,
只不过需要注意的地方是
- 对于 指定元素可以存在多个,对于处于 第一个位置 的情况,想要删除,需要 快指针 从
j = 0
开始
class Solution { public int removeElement(int[] nums, int val) { if(nums.length == 0){ return 0; } if(nums.length == 1 && nums[0] == val){ return 0; } //双指针 //需要注意的是 i 从 -1开始,即处理 nums[0] 存在待删除元素 int i = -1; for(int j = 0;j
发表评论
最新留言
做的很好,不错不错
[***.243.131.199]2025年03月29日 05时33分45秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Burpsuite-02-设置JVM内存大小与解决页面显示文字乱码错误
2019-03-04
Python学习:字符串
2019-03-04
计算几何(旁切圆) - Ex-circles - UVA 11731
2019-03-04
DP - Tickets - HDU - 1260
2019-03-04
phpStudy for Linux (lnmp+lamp一键安装包)
2019-03-04
【安卓学习笔记】JAVA基础Lesson9-对象的转型
2019-03-04
本校暑假训练营11_Python数据分析入门7-网络1
2019-03-04
本校暑假训练营12_Python数据分析入门7-网络2
2019-03-04
数据库SQL实战3_获取所有非manager的员工emp_no
2019-03-04
LeetCode7_数组双指针_有序数组元素去重、数组移除指定元素
2019-03-04
JVM篇-结合源码分析垃圾收集器的类型
2019-03-04
RT -Thread Studio开发环境下使用W5500做TCP客户端
2019-03-04
Warning: The core is locked up的解决办法
2019-03-04
奔涌吧 后浪!!! 哔哩哔哩 何冰
2019-03-04
【JVM系列】JDK 内置工具
2019-03-04
JAVA 基础与进阶系列索引 -- JDK 源码学习系列 -- 并发
2019-03-04
网络编程系列索引 -- JAVA 网络编程系列
2019-03-04