題目
給你一個(gè)數(shù)組 nums 和一個(gè)值 val旺隙,你需要原地移除所有數(shù)值等于val的元素纪岁,并返回移除后數(shù)組的新長(zhǎng)度毁欣。不要使用額外的數(shù)組空間卒密,你必須僅使用O(1)額外空間并原地修改輸入數(shù)組缀台。元素的順序可以改變。你不需要考慮數(shù)組中超出新長(zhǎng)度后面的元素哮奇。
方法一
class Solution(object):
def removeElement(self, nums, val):
i = 0
size = len(nums)
while i < size:
if nums[i] == val:
j = i + 1
while j < len(nums):
nums[j-1] = nums[j]
j = j + 1
i = i - 1
size = size - 1
i = i + 1
return size
方法二:雙指針
通過(guò)一個(gè)快指針和慢指針在一個(gè)for循環(huán)下完成兩個(gè)for循環(huán)的工作膛腐。
class Solution(object):
def removeElement(self, nums, val):
slow, fast = 0, 0
while fast < len(nums):
if nums[fast] != val:
nums[slow] = nums[fast]
slow = slow + 1
fast = fast + 1
return slow
參考
代碼相關(guān):https://programmercarl.com/
Leetcode官方解題