LeetCode题解:移除元素
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode题解:移除元素相关的知识,希望对你有一定的参考价值。
参考技术A 给你一个数组nums和一个值val,你需要原地删除所有值等于val的元素,并返回删除后数组的新长度。
不要使用额外的数组空间,你必须仅使用O(1)额外空间并原地修改输入数组。
元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。
系统调用过程
输入: nums = [3,2,2,3], val = 3
输出: 2, nums = [2,2]
使用双指针left和right,right率先遍历,当num[right]与val值相等时,left不移动,right继续移动。直到right遍历完整个数组,数组前left个元素就是删除val后的结果。
复杂度分析
同样是使用双指针,不过这次两个指针分别起始在数组最左边与最右边。
核心思想就是将需要删除的元素与最后的几位元素进行交换。
好处:这样的方法两个指针在最坏的情况下合起来只遍历了数组一次。与前一方法不同的是,方法二避免了需要保留的元素的重复赋值操作。
复杂度分析
以上是关于LeetCode题解:移除元素的主要内容,如果未能解决你的问题,请参考以下文章