1. 程式人生 > 實用技巧 >刪除排序陣列中的重複選項

刪除排序陣列中的重複選項

刪除排序陣列中的重複選項(點選檢視原題:remove-duplicates-from-sorted-array

github刪除排序陣列中的重複選項

這個題給我的第一感覺,排序的陣列,這下難度降低了許多,我最初想的是把不重複的資料都移到陣列的前幾位,這樣也確實對的,能得到去除重複元素後陣列的長度,但是這樣本質上陣列的長度還是和以前一樣的。然後我又想到了移除元素這道題的做法,可以倒敘遍歷陣列,然後把資料移除,這樣得到的陣列也是移除重複資料的陣列啦。

程式碼如下:

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]))