题目:
解法1:
- 遍历数组,当前位数值和前一位比较,如果相等,则删除改值,注意下标改变了,所以设置一个count,用于记录删除了多少个值。
def removeDuplicates(self, nums: List[int]) -> int:
if not nums:
return 0
temp = nums[0]
count = 0
for i in range(1,len(nums)):
if temp == nums[i-count]:
del nums[i-count]
count += 1
else:
temp = nums[i-count]
return len(nums)
解法2:
- 双指针法,慢指针i和快指针j,当i和j所指的值不同时,将i指针右移一位,并将当前j所指的值赋值到当前i位。反之,如果i和j所指值相同时,j向右移动。
class Solution:
def removeDuplicates(self, nums: List[int]) -> int:
if not nums:
return 0
i=0
for j in range(1,len(nums)):
if nums[i]!=nums[j]:
i += 1
nums[i]=nums[j]
return i+1