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

给你一个 升序排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 nums 中唯一元素的个数。

考虑 nums 的唯一元素的数量为 k ,你需要做以下事情确保你的题解可以被通过:

更改数组 nums ,使 nums 的前 k 个元素包含唯一元素,并按照它们最初在 nums 中出现的顺序排列。nums 的其余元素与 nums 的大小不重要。

返回 k 。

判题标准:

系统会用下面的代码来测试你的题解:

int\[\] nums = ...; // 输入数组

int\[\] expectedNums = ...; // 长度正确的期望答案

int k = removeDuplicates(nums); // 调用

assert k == expectedNums.length;

for (int i = 0; i < k; i++) {

assert numsi == expectedNumsi;

}

如果所有断言都通过,那么您的题解将被 通过。
示例 1:

输入:nums = 1,1,2

输出:2, nums = 1,2,_

解释:函数应该返回新的长度 2 ,并且原数组 nums 的前两个元素被修改为 1, 2 。不需要考虑数组中超出新长度后面的元素。
示例 2:

输入:nums = 0,0,1,1,1,2,2,3,3,4

输出:5, nums = 0,1,2,3,4

解释:函数应该返回新的长度 5 , 并且原数组 nums 的前五个元素被修改为 0, 1, 2, 3, 4 。不需要考虑数组中超出新长度后面的元素。
提示:

1 <= nums.length <= 3 * 104

-104 <= numsi <= 104

nums 已按 升序 排列

bash 复制代码
class Solution(object):
    def removeDuplicates(nums):
        """
        :type nums: List[int]
        :rtype: int
        """
        slow,fast=0,1
        while fast<len(nums):
            if nums[slow]!=nums[fast]:
                slow+=1
                nums[slow]=nums[fast]
            fast+=1
        return slow+1
相关推荐
道影子5 分钟前
《黄帝内经》021章|津凝精晶 沉降为患
人工智能·深度学习·神经网络·算法·机器学习
道影子13 分钟前
《黄帝内经》022章|调和双旋 伏风自消
人工智能·深度学习·神经网络·算法·机器学习
Angle.寻梦40 分钟前
数据结构--栈与队列
数据结构
吞下星星的少年·-·1 小时前
牛客技能树:一道GCD问题(排序,数论)
算法
热爱前端的小张1 小时前
第六章 图
数据结构
m沐沐1 小时前
【计算机视觉】人脸识别三大经典算法:LBPH、Eigenfaces、FisherFaces 原理与实战
图像处理·人工智能·深度学习·opencv·算法·机器学习·计算机视觉
Lumos1861 小时前
嵌入式常用滤波算法与控制算法(5)卡尔曼滤波(下)
算法
Lumos1861 小时前
嵌入式常用滤波算法与控制算法(6)互补滤波
算法
Tisfy1 小时前
LeetCode 3536.两个数字的最大乘积:O(1)空间维护max2
数学·算法·leetcode·题解
知识分享小能手1 小时前
统计学学习教程,从入门到精通,一元线性回归 —— 知识点详解(17)
学习·算法·线性回归