26. 删除有序数组中的重复项
一、问题描述
二、算法思想
题目的意思是把数组中不重复的元素都存到前面来,要把前面重复的元素用后面不重复的元素覆盖掉,至于后面的元素存的是什么不用管,这里可以用设置快慢针来解决。
1、刚开始时慢针i设为0,快针j设为1,i+1表示将要被j代表的元素覆盖的位置。
2、i不动,j往后走,当nums[i] == nums[j]时,说明元素重复,j继续往后走;当不相等时,i加一,nums[i] = nums[j]。
3、重复步骤2,直至走到最后一个元素。
三、代码
class Solution(object):
def removeDuplicates(self, nums):
"""
:type nums: List[int]
:rtype: int
i表示慢针,j为快针,i不动j往后走
nums[i] != nums[j]时,把j对应的元素插到i后面那一个
"""
i = 0
j = i + 1
while j < len(nums):
if nums[i] == nums[j]:
j += 1
else:
i += 1
nums[i] = nums[j]
return i + 1
四、题目链接
https://leetcode.cn/problems/remove-duplicates-from-sorted-array/