Given a sorted array nums, remove the duplicates in-placesuch that each element appear only once and return the new length.
Do not allocate extra space for another array, you must do this by modifying the input array in-place with O(1) extra memory.
Example 1:
Given nums = [1,1,2], Your function should return length =2, with the first two elements ofnumsbeing1and2respectively. It doesn't matter what you leave beyond the returned length.
Example 2:
Given nums = [0,0,1,1,1,2,2,3,3,4], Your function should return length =5, with the first five elements ofnumsbeing modified to0,1,2,3, and4respectively. It doesn't matter what values are set beyond the returned length.
This question should use two pointers(单向双指针)
class Solution(object):
def removeDuplicates(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
slow=fast=0
while fast<len(nums):
while fast<len(nums) and nums[fast]==nums[slow]:
fast+=1
while fast<len(nums) and nums[fast]!=nums[slow]:
slow+=1
nums[slow]=nums[fast]
fast+=1
if fast==len(nums):
return slow+1
本文介绍了一个使用双向双指针技术的高效算法,该算法能在原地修改输入数组以移除重复元素,并返回新长度。文章通过两个实例展示了如何在不使用额外空间的情况下,确保每个元素只出现一次。
1100

被折叠的 条评论
为什么被折叠?



