26. Remove Duplicates from Sorted Array(easy)
Given a sorted array nums, remove the duplicates in-place such that each element appear only onceand 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 of
nums being
1
and2
respectively. 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 ofnums
being modified to0,1,2,3,and 4 respectively.
It doesn't matter what values are set beyond the returned length.
题意:问有几个不重复的数字 假设k个,返回k且这几个不重复的数字必须在nums的前 k个(inplace)
1 my solution : 直接遍历删除重复数字,最后返回数组长度
class Solution:
def removeDuplicates(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
if len(nums) == 0 or len(nums) == 1: return len(nums)
i = 1
while(i < len(nums)):
if nums[i] == nums[i-1]:del nums[i]
else:i += 1
return len(nums)
2 two pointer
看example一直强调只要前面k个是满足条件的数字即可,就是说nums[k:] 是啥都无所谓
所以直接遍历修改前k个数字
class Solution:
def removeDuplicates(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
for j in range(1,len(nums)):
if nums[i] != nums[j]:
i += 1
nums[i] = nums[j]
return i+1