版权声明:原创部分都是自己总结的,如果转载请指明出处。觉得有帮助的老铁,请双击666! https://blog.csdn.net/qq_36387683/article/details/82558294
100. 删除排序数组中的重复数字
给定一个排序数组,在原数组中删除重复出现的数字,使得每个元素只出现一次,并且返回新的数组的长度。
不要使用额外的数组空间,必须在原地没有额外空间的条件下完成。
样例
给出数组A =[1,1,2],你的函数应该返回长度2,此时A=[1,2]。
class Solution:
"""
@param: nums: An ineger array
@return: An integer
"""
'''
#TLE
def removeDuplicates(self, nums):
# write your code here
if len(nums) < 2:
return len(nums)
index = 0
while index < len(nums) - 1:
if nums[index] == nums[index+1]:
nums[index:] = nums[index+1:]
else:
index += 1
return len(nums)
'''
def removeDuplicates(self, nums):
k = 0
for i in range(1,len(nums)):
#定义一个单独index,记录不重复的数,因为数组存在重复,所以数组长度足够
if nums[i] != nums[k]:
k += 1
nums[k] = nums[i]
return k + 1
101. 删除排序数组中的重复数字 II
跟进“删除重复数字”:
如果可以允许出现两次重复将如何处理?
class Solution:
"""
@param: nums: An ineger array
@return: An integer
"""
def removeDuplicates(self, nums):
# write your code here
if len(nums) == 0:
return 0
count = 0
for i in range(len(nums)):
if count < 2 or nums[count-2] < nums[i]:
nums[count] = nums[i]
count += 1
return count