LeetCode | 26.删除有序数组中的重复项

在这里插入图片描述
在这里插入图片描述
在我接触到这道题的时候想的就是一次遍历,设置两个变量记录当前遍历到的数字和对应原数组应该修改的index,在运行过程中,因为原数组已经是有序的了,只不过会存在重复的数字,但是这些重复的数字也是挨在一起的,所以我们默认nums的第一个元素不用做修改,currentNum就等于nums[0],index也直接从1开始,往后遍历,如果遇到数字和currentNum相等的,就是重复的数字,直接跳过即可,遇到不相等的就是我们要记录在nums中index所在位置的数字,直接令currentNum等于这个数字,修改对应nums相应位置的数字并往后进行,直到程序结束即可

class Solution(object):
    def removeDuplicates(self, nums):
        """
        :type nums: List[int]
        :rtype: int
        """
        i, index = 1, 1
        currentNum = nums[0]
        while i < len(nums):
            while nums[i] != currentNum:
                currentNum = nums[i]
                nums[index] = currentNum
                index += 1
            i += 1
        return index

在这里插入图片描述

看了题解,我的思想类似与题解中的快慢指针解法,首先注意数组是有序的,那么重复的元素一定会相邻。要求删除重复元素,实际上就是将不重复的元素移到数组的左侧。考虑用 2 个指针,一个在前记作 p,一个在后记作 q,算法流程如下:比较 p 和 q 位置的元素是否相等,如果相等,q 后移 1 位,如果不相等,将 q 位置的元素复制到 p+1 位置上,p 后移一位,q 后移 1 位。重复上述过程,直到 q 等于数组长度。
返回 p + 1,即为新数组长度。

题解:https://leetcode.cn/problems/remove-duplicates-from-sorted-array/solutions/34033/shuang-zhi-zhen-shan-chu-zhong-fu-xiang-dai-you-hu/

在这里插入图片描述

class Solution:
    def removeDuplicates(self, nums: List[int]) -> int:
        if not nums:
            return 0
        
        n = len(nums)
        fast = slow = 1
        while fast < n:
            if nums[fast] != nums[fast - 1]:
                nums[slow] = nums[fast]
                slow += 1
            fast += 1
        
        return slow

相关推荐

  1. LeetCode 26. 删除有序数组重复

    2024-06-16 01:32:04       67 阅读
  2. LeetCode 26 删除有序数组重复

    2024-06-16 01:32:04       54 阅读
  3. [leetcode] 26. 删除有序数组重复

    2024-06-16 01:32:04       39 阅读
  4. leetcode26--删除有序数组重复

    2024-06-16 01:32:04       30 阅读
  5. leetCode26. 删除有序数组重复

    2024-06-16 01:32:04       30 阅读
  6. 26. 删除有序数组重复

    2024-06-16 01:32:04       74 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-16 01:32:04       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-16 01:32:04       100 阅读
  3. 在Django里面运行非项目文件

    2024-06-16 01:32:04       82 阅读
  4. Python语言-面向对象

    2024-06-16 01:32:04       91 阅读

热门阅读

  1. 盘点热门开源大模型

    2024-06-16 01:32:04       29 阅读
  2. Android 应用程序 ANR 问题分析总结

    2024-06-16 01:32:04       23 阅读
  3. 时钟和系统控制

    2024-06-16 01:32:04       24 阅读
  4. 深度学习中的卷积算子优化与GPU加速

    2024-06-16 01:32:04       34 阅读
  5. Rust 基金会的商标政策更新引发社区争议

    2024-06-16 01:32:04       28 阅读
  6. 多维数组切片

    2024-06-16 01:32:04       30 阅读
  7. Web前端开发UL:探索与解构列表的奥秘

    2024-06-16 01:32:04       30 阅读
  8. Vue Router 快速入门教程

    2024-06-16 01:32:04       26 阅读