1. 程式人生 > 其它 >leetcode - 7.刪除有序陣列中的重複項

leetcode - 7.刪除有序陣列中的重複項

題目及說明

刪除有序陣列中的重複項

給你一個有序陣列 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

更多學習筆記移步 https://www.cnblogs.com/kknote