题目描述
思路一:
遍历整个数组,遇到和val值相等的,直接移除,使用remove,对索引可以使用del(索引的话建议从后往前删)
遍历一次,所以复杂度时O(n)
直接删除值
class Solution:
def removeElement(self, nums: List[int], val: int) -> int:
while val in nums:
nums.remove(val)
return len(nums)
对索引进行操作
class Solution:
def removeElement(self, nums: List[int], val: int) -> int:
for i in range(len(nums)-1,-1,-1):
if nums[i] == val:
del nums[i]
return len(nums)
思路二:
使用两个指针,快指针将不是val的值赋值到慢指针所在的位置,总共赋值了多少次,这个数组里就有多少个值不等于val(这和题目有关,题目说的移除,不是真正的移除,可以是替换)
class Solution:
def removeElement(self, nums: List[int], val: int) -> int:
i = 0
for j in range(0,len(nums)):
if nums[j] != val:
nums[i] = nums[j]
i = i+1
return i