leetcode - 7.刪除有序陣列中的重複項
阿新 • • 發佈:2021-08-09
題目及說明
刪除有序陣列中的重複項
給你一個有序陣列 nums ,請你 原地 刪除重複出現的元素,使每個元素 只出現一次 ,返回刪除後陣列的新長度。
不要使用額外的陣列空間,你必須在 原地 修改輸入陣列 並在使用 O(1) 額外空間的條件下完成。
思路:雙指標
定義一個快指標fast,一個慢指標slow,快指標遍歷陣列1到n-1,
如果陣列長度為0,直接返回0,否則fast小於n:
如果fast的元素和fast-1的元素相等,那麼直接fast+1往下繼續,
如果fast不等於fast-1,說明兩個值不一樣,那麼把fast指向的元素給slow的位置,然後把slow+1,fast+1,繼續迴圈遍歷
解法
__author__ = 'kangpc' __date__ = '2021-8-9 18:07' class Solution: def removeDuplicates(self, nums: List[int]) -> int: if not nums:return 0 n = len(nums) fast = slow = 1 while fast < n: if nums[fast] != nums[fast-1]: nums[slow] = nums[fast] slow += 1 fast += 1 return slow
時間複雜度:O(n)
執行用時:56 ms
記憶體消耗:15.6 MB