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