刪除排序陣列中的重複選項
阿新 • • 發佈:2020-08-01
刪除排序陣列中的重複選項(點選檢視原題:remove-duplicates-from-sorted-array)
這個題給我的第一感覺,排序的陣列,這下難度降低了許多,我最初想的是把不重複的資料都移到陣列的前幾位,這樣也確實對的,能得到去除重複元素後陣列的長度,但是這樣本質上陣列的長度還是和以前一樣的。然後我又想到了移除元素這道題的做法,可以倒敘遍歷陣列,然後把資料移除,這樣得到的陣列也是移除重複資料的陣列啦。
程式碼如下:
from typing import List class Solution: # 方法一 # def removeDuplicates(self, nums: List[int]) -> int: # i = 0 # nums_len = len(nums) # for j in range(1, nums_len): # if nums[i] != nums[j]: # i += 1 # nums[i] = nums[j] # print(nums) # 陣列的長度還和之前一樣,只是資料調換了下位置 # return i+1 # 方法二 def removeDuplicates(self, nums: List[int]) -> int: nums_len = len(nums) i = nums_len - 1 for j in range(nums_len - 2, -1, -1): if nums[i] == nums[j]: nums.pop(j) i -= 1 # print(nums) # 陣列長移除重複資料後的陣列 return len(nums) if __name__ == '__main__': s = Solution() print(s.removeDuplicates([0, 0, 1, 1, 1, 2, 2, 3, 3, 4])) print(s.removeDuplicates([1, 1, 2]))