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题解:移除元素的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode题解:移除元素

力扣(LeetCode)移除链表元素 个人题解

leetcode No203 移除链表元素 java

Leetcode题解....ing python

LeetCode - #203 移除链表元素

每日一题之LeetCode移除元素 删除有序数组重复元素