Leetcode-Task02. 删除排序数组中的重复项

(1)示例删除多余元素

class Solution:
    def removeDuplicates(self, nums: List[int]) -> int:
        nums = [0,0,1,1,1,2,2,3,3,4]
        for i in range(len(nums)-1):
            for j in nums[i+1: ]:
                if nums[i] == j:
                    nums.remove(nums[i])
                else:
                    break
        print(nums)

(2)判断列表中元素是否相等,相等就删除多余的元素

def removeDuplicates(self, nums):
        """
        :type nums: List[int]
        :rtype: int
        """
        if not nums:
            return 0
        if len(nums)==1:   #单独判断列表长度为1的情况,因为之后的for循环从下标1开始
            return 1
        temp_num = nums[0]
        count =0          #for循环中动态删除列表元素,列表缩短,为了防止下标溢出需要用count标记删除元素个数
        for index, num in enumerate(nums[1:]):
            if temp_num == num:     #元素相等就删除
                del nums[index-count]
                count += 1
            else:                   
                temp_num = num
        return len(nums)
def removeDuplicates(self, nums):
        """
        :type nums: List[int]
        :rtype: int
        """
        forth = 0
        back = 1
        while back <= len(nums)-1:
            if nums[forth] == nums[back]:
                nums.pop(back)
            else:
                forth += 1
                back += 1
        return len(nums)

修改数组,保证数组前几个数字互不相同,且这几个数字的长度同返回的长度相等。

def removeDuplicates(self, nums):
        """
        :type nums: List[int]
        :rtype: int
        """
        if not nums:
            return 0
        length = 0      #不存在重复数字的数组长度
        for index in range(1,len(nums)):      #遍历数组
            if nums[index] != nums[length]:
                length += 1
                nums[length] = nums[index]
        return length+1
发布了41 篇原创文章 · 获赞 0 · 访问量 513

猜你喜欢

转载自blog.csdn.net/qq_39199884/article/details/104606641