第一天,删除排序数组中的重复项
解题思路1:
通过len()获取数组长度,然后通过循环判断两个值是否相等,通过 del 删除一个重复项(该题目已经排序
)
class Solution:
def removeDuplicates(self, nums: List[int]) -> int:
i= len(nums)-1
while i>0:
if nums[i]==nums[i-1]:
del nums[i]
i-=1
return len(nums)
python3中删除元素的方法还有 .pop() 等
解题思路2:
快慢指针同时向前走,快指针达到数组边界后停止循环。当两个元素相等时慢指针停止,快指针不受影响。输出结果时慢指针需要+1,因为慢指针从零开始。(下面代码是提交后偷看大佬答案,个人理解就是这样应该没啥问题)
class Solution:
def removeDuplicates(self, nums: List[int]) -> int:
fast = 1
slow = 0
while fast < len(nums):
if nums[fast] == nums[slow]:
fast += 1
else:
slow += 1
nums[slow] = nums[fast]
fast += 1
return slow+1
题目来源力扣,初级算法第一题