leetcode26. 删除排序数组中的重复项 python实现

题目:

leetcode26题目描述

解法1:

  • 遍历数组,当前位数值和前一位比较,如果相等,则删除改值,注意下标改变了,所以设置一个count,用于记录删除了多少个值。
    def removeDuplicates(self, nums: List[int]) -> int:
        if not nums:
            return 0
        
        temp = nums[0]
        count = 0
        for i in range(1,len(nums)):
            if temp == nums[i-count]:
                del nums[i-count]
                count += 1
            else:
                temp = nums[i-count]
        return len(nums)

解法2:

  • 双指针法,慢指针i和快指针j,当i和j所指的值不同时,将i指针右移一位,并将当前j所指的值赋值到当前i位。反之,如果i和j所指值相同时,j向右移动。
class Solution:
    def removeDuplicates(self, nums: List[int]) -> int:
        if not nums:
            return 0
        i=0
        for j in range(1,len(nums)):
            if nums[i]!=nums[j]:
                i += 1
                nums[i]=nums[j]
        return i+1
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。