1. 題目
2.題目分析與思路
3.**
給定 nums = [3,2,2,3], val = 3,
函式應該返回新的長度 2, 並且 nums 中的前兩個元素均為 2。
你不需要考慮陣列中超出新長度後面的元素。
這道題經典的雙指標,或者使用很奇特的做法,用python的後續遍歷
雙指標
classsolution:
def removeelement(self, nums: list[int], val: int) ->int:
count = len(nums) -1i =0
if len(nums) ==0:
return
0
while(i if nums[count] ==val:
count -= 1
continue
if nums[i] ==val:
nums[i],nums[count] =nums[count],nums[i]
i += 1count -= 1
else
: i += 1
if nums[i] ==val:
return
i
else
:
return i+1
python 後續遍歷:
classsolution:
def removeelement(self, nums: list[int], val: int) ->int:
j=len(nums)
for i in range(j-1,-1,-1):
if nums[i]==val:
nums.pop(i)
return len(nums)
那為什麼不能用前向遍歷呢,因為使用pop會改變陣列長度,pop完後指標又自增1,就會導致漏掉數字,感覺挺有意思的這個解法。
leetcode刷題筆記 第27題 移除元素
描述 給定乙個陣列 nums 和乙個值 val,你需要原地移除所有數值等於 val 的元素,返回移除後陣列的新長度。不要使用額外的陣列空間,你必須在原地修改輸入陣列並在使用 o 1 額外空間的條件下完成。元素的順序可以改變。你不需要考慮陣列中超出新長度後面的元素。示例 給定 nums 3,2,2,3...
Leetcode 刻意訓練第27題移除元素
題目描述 給定乙個陣列 nums 和乙個值 val,你需要原地移除所有數值等於 val 的元素,返回移除後陣列的新長度。不要使用額外的陣列空間,你必須在原地修改輸入陣列並在使用 o 1 額外空間的條件下完成。元素的順序可以改變。你不需要考慮陣列中超出新長度後面的元素。解題思路 剛開始拿到這題的時候首...
leetcode題 27 移除元素(簡單)
一 題目描述 27.移除元素 簡單 給定乙個陣列 nums 和乙個值 val,你需要原地移除所有數值等於 val 的元素,返回移除後陣列的新長度。不要使用額外的陣列空間,你必須在原地修改輸入陣列並在使用 o 1 額外空間的條件下完成。元素的順序可以改變。你不需要考慮陣列中超出新長度後面的元素。示例 ...