解法
雙指針
因爲數組已經排序,在數組中放置 i 和 j 兩個指針,且i在j的左邊
i爲慢指針j爲快指針。
進行判斷:
- 當nums[i]==nums[j]時,j指針向後移動一位,i不變
- 當nums[i]!=nums[j]時,i指針向後移動一位,得到新的nums[i]=nums[j],之後j指針向後移動一位
最後返回的就是i+1表示移除後數組的新長度
代碼實現
class Solution:
def removeDuplicates(self, nums: List[int]) -> int:
i, j = 0, 1
while j < len(nums):
if nums[j] > nums[i]:
i += 1
nums[i] = nums[j]
j += 1
return i+1