天天看點

LeetCode刷題筆記第26題:删除有序數組中的重複項LeetCode刷題筆記第26題:删除有序數組中的重複項

LeetCode刷題筆記第26題:删除有序數組中的重複項

想法:

從示例中可以看出,數組中的元素是遞增的序列,是以通過對數組的循環周遊,将數組内的元素從第一個元素開始依次向後對比,并将不同數組元素的值賦給之前相同元素的第二個數組元素,當周遊循環結束之後,數組中前面部分即為數組中不同的元素。如此操作不需要額外的存儲空間即可得到不同數組元素個數的數值。

class Solution:
    def removeDuplicates(self, nums: List[int]) -> int:
        # 當數組為空時,傳回0
        if not nums: 
            return 0
        # 設定變量i記錄數組中不同元素個數
        i = 0 
        # 以數組長度作循環
        for j in range(1, len(nums)):
            # 當數組中第i個元素與第j個元素不相同數
            if nums[i] != nums[j]:
                # 數組中不同元素個數加一
                i += 1
                # 将數組中不同元素有序的指派給數組中前幾個數組位置上
                nums[i] = nums[j]
        # 傳回數組中不同元素的個數,也表示數組中前i+1個元素代表數組中所有不同的元素
        return i + 1
           

繼續閱讀