給你一個?非嚴格遞增排列?的數組?
nums
?,請你?原地?刪除重復出現的元素,使每個元素?只出現一次?,返回刪除后數組的新長度。元素的?相對順序?應該保持?一致?。然后返回?nums
?中唯一元素的個數。考慮?
nums
?的唯一元素的數量為?k
?,你需要做以下事情確保你的題解可以被通過:
- 更改數組?
nums
?,使?nums
?的前?k
?個元素包含唯一元素,并按照它們最初在?nums
?中出現的順序排列。nums
?的其余元素與?nums
?的大小不重要。- 返回?
k
?。示例 1:
輸入:nums = [1,1,2] 輸出:2, nums = [1,2,_] 解釋:函數應該返回新的長度2,并且原數組 nums 的前兩個元素被修改為1, 2。不需要考慮數組中超出新長度后面的元素。示例 2:
輸入:nums = [0,0,1,1,1,2,2,3,3,4] 輸出:5, nums = [0,1,2,3,4] 解釋:函數應該返回新的長度 5,并且原數組 nums 的前五個元素被修改為 0, 1, 2, 3, 4。不需要考慮數組中超出新長度后面的元素。
class Solution:def removeDuplicates(self, nums: List[int]) -> int:# 快慢指針法if nums is None:return 0slow=0for fast in range(1,len(nums)):if nums[slow] != nums[fast]:slow+=1# 在原地修改數組時,不用擔心會把還沒執行的數據覆蓋掉,因為fast始終比slow快nums[slow]=nums[fast]return slow+1