方法一、双指针
题目要求删除数组中等于val
的所以元素,输出数组的长度小于或等于输入数组的长度,因此我们就可以把输出数组写在输入数组上。我们可以选择双指针:右指针i
指向当前处理的数组元素,左指针cover_pointer
指向下一个将要赋值的位置。
如果右指针指向的当前元素不等于val
,nums[i]
输出一个元素,我们就将当前元素不等于val
值,则复制到覆盖指针指向的位置,并向后移动一位。
如果右指针指向的当前元素等于val
,不能输出到数组中左指针不动,并将右指针向后移动一位。
Python3 代码题解
class Solution:
def removeElement(self, nums: List[int], val: int) -> int:
# 初始化覆盖指针和数组长度
cover_pointer = 0
length = len(nums)
for i in range(length):
if nums[i] != val:
# 如果当前元素不等于初始值,则复制到覆盖指针指向的位置
nums[cover_pointer] = nums[i]
# 覆盖指针向后移动一位
cover_pointer += 1
return cover_pointer
![](https://blog.liuyingjie.com.cn/wp-content/uploads/2023/07/27.-移除元素.png)
Source: LeetCode(The title reproduced in this blog is for personal study use only)
Be First to Comment