LeetCode(27)移除元素
今天是小呆刷题的第3天,今天的题目是:力扣(LeetCode)的第27题,移除元素
题目要求
给你一个数组
nums
和一个值val
,你需要原地移除所有数值等于val
的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用
O(1)
额外空间并原地修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。
示例:
1 |
|
提示:
0 <= nums.length <= 100
0 <= nums[i] <= 50
0 <= val <= 100
解题思路
因为需要原地修改数组,并且无需考虑元素的顺序和数组中超出新长度后面的元素。思路的话就是循环数组,将所有值等于val
的元素,替换为非val
的元素。依然可以使用双指针算法进行解决。
依旧通过图例的方式来辅助理解每一次循环过程中fast
指针和slow
指针的变化:
1 |
|
小结
由于这道题是删除指定的val
,所以判断条件里当fast
不等于val
的时候,slow
要先原地替换为fast
的值再往前移,而前面两天的题都是先往前移再进行赋值。这里还是要注意变通一下。
引用
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 小呆&小萌的情侣博客!
评论