27. 移除元素 - 力扣(LeetCode)
代码随想录
数组的元素在内存地址中是连续的,不能单独删除数组中的某个元素,只能覆盖。
My answer:快慢指针法
class Solution:def removeElement(self, nums: List[int], val: int) -> int:n = len(nums)j = 0for i in range(n):if nums[i] != val:nums[j] = nums[i]j += 1return j
i是快指针(fast),j是慢指针(slow)
解法2:暴力解法
class Solution:def removeElement(self, nums: List[int], val: int) -> int:n = len(nums)i = 0while i < n:if nums[i] == val:for j in range(i+1, n): #发现需要移除的元素,就将数组集体向前移动一位nums[j-1] = nums[j]i -= 1 #注意:因为下标i以后的数值都向前移动了一位,所以i也向前移动一位n -= 1 i += 1 return n
解法3:相向双指针法