LeetCode(27)移除元素
今天要练习的题目是:力扣(LeetCode)的第27题,移除元素
题目要求
给你一个数组
nums和一个值val,你需要原地移除所有数值等于val的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用
O(1)额外空间并原地修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。
示例:
1 | |
提示:
0 <= nums.length <= 1000 <= nums[i] <= 500 <= val <= 100
解题思路
因为需要原地修改数组,并且无需考虑元素的顺序和数组中超出新长度后面的元素。思路的话就是循环数组,将所有值等于val的元素,替换为非val的元素。依然可以使用双指针算法进行解决。
依旧通过图例的方式来辅助理解每一次循环过程中fast指针和slow指针的变化:

1 | |
小结
由于这道题是删除指定的val,所以判断条件里当fast不等于val的时候,slow要先原地替换为fast的值再往前移,而前面两天的题都是先往前移再进行赋值。这里还是要注意变通一下。
引用
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 呆萌's Blog!
评论












