lintcode练习 - 100. 删除排序数组中的重复数字

版权声明:原创部分都是自己总结的,如果转载请指明出处。觉得有帮助的老铁,请双击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
            
                    

猜你喜欢

转载自blog.csdn.net/qq_36387683/article/details/82558294