Leetcode简单:26. 删除排序数组中的重复项

C++数组去重复 (5.1.98) 样例。输入 第一行,一个整数n代表有多少人领取物资 第二行,n个整数代表每个人领取的颜色编号 输出 1行,领取数量最多的颜色编号及数量 第一个整数代表角色编号,第二个整数代表领取的数量。输入 第一行是一个整数n代表下载的总数量 第二行的n个整数代表n次下载游戏的编号 输出 n行, 每行2个整数,代表被下载过的游戏编号级下载次数。输入 第一行是一个整数n代表下载的总数量 第二行的n个整数代表n次下载游戏的编号 输出 1行,被下载过的游戏编号列表,中间用空格隔开。 阅读详情

题目:删除排序数组中的重复项

  • 题号:26
  • 难度:简单
  • https://leetcode-cn.com/problems/remove-duplicates-from-sorted-array/

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

由于在某些语言中不能改变数组的长度,所以必须将结果放在数组nums的第一部分。更规范地说,如果在删除重复项之后有 k 个元素,那么nums的前 k 个元素应该保存最终结果。

将最终结果插入nums 的前 k 个位置后返回 k 。

不要使用额外的空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。

判题标准:

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

int[] nums = [...]; // 输入数组
int[] expectedNums = [...]; // 长度正确的期望答案

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

assert k == expectedNums.length;
for (int i = 0; i < k; i++) {
    assert nums[i] == expectedNums[i];
}

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

示例 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∗1041 <= nums.length <= 3 * 10^41<=nums.length<=3∗104
  • −104<=nums[i]<=104-10^4 <= nums[i] <= 10^4−104<=nums[i]<=104
  • nums 已按 升序 排列

实现

双索引法:就是一个快索引一个慢索引,j快i慢,当nums[j] == nums[i]时,j++就可以跳过重复项,不相等时,让i++并让nums[i] = nums[j],把值复制过来继续执行到末尾即可,时间复杂度为 O(n)。

C# 实现

public class Solution 
{
    public int RemoveDuplicates(int[] nums) 
    {
        if (nums.Length < 2)
            return nums.Length;
            
        int i = 0;
        for (int j = 1; j < nums.Length; j++)
        {
            if (nums[j] != nums[i])
            {
                i++;
                nums[i] = nums[j];
            }
        }
        return i + 1;        
    }
}

Python 实现

class Solution(object):
    def removeDuplicates(self, nums):
        """
        :type nums: List[int]
        :rtype: int
        """
        if len(nums) < 2:
            return 1
        i, j = 0, 1
        while j < len(nums):
            if nums[i] != nums[j]:
                i += 1
                nums[i] = nums[j]
            else:
                j += 1
        return i + 1
菜鸟初刷LeetCode——数组(1) removeDuplicates从排序数组中删除重复项 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。 示例 1: 给定数组 nums = [1,1,2], 函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1,2。 你不需要考虑数组中超出新长度后面的元素。 示例 2: ... 阅读详情

相关推荐

【LeetCode Python实现】26. 删除排序数组中的重复项(简单)

想要看更加舒服的排版、更加准时的推送 关注公众号“不太灵光的程序员” 每日八点有干货推送,微信随时解答你的疑问 26. 删除排序数组中的重复项 python3 简单 数组 给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。 不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。 示例 1: 给定数组 nums = [1,1,2], 函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2.

835

【27】移除元素【LeetCode】

1.题目描述 给你一个升序排列的数组nums,请你原地删除重复出现的元素,使每个元素只出现一次,返回删除后数组的新长度。元素的相对顺序应该保持一致。 由于在某些语言中不能改变数组的长度,所以必须将结果放在数组nums的第一部分。更规范地说,如果在删除重复项之后有k个元素,那么nums的前k个元素应该保存最终结果。 将最终结果插入nums的前k个位置后返回k。 不要使用额外的空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。...

书启鸿蒙知秋枫 1693

USB PD Sink HUSB238A可应用于24V电动风扇/电动工具

HUSB238A在I2C模式下,可申请PD3.1 EPR AVS功率,可申请24V电压直接给电机供电

Hynetek的博客 759

一个不用数组的数组去重题

一个不用数组的数组去重题 Description 现有一个非减序(即前面的元素值不会比后面元素的数值大)排列的一维数组,其中有若干元素是重复的。编程将重复元素删除掉若干个,仅保留1个,使数组中没有重复元素。 Input 输入有多行。第一行M>0,表示之后有M行输入。 之后的M行输入是若干个一维数组。每行的第一个数据0<N<=1000,表示该数组有N个整数。其后是按照非减序排好的N个整数,每个元素均在int类型的表示范围之内。每行的所有数据两两之间用一个空格隔开。 Output 输出有M行,

weixin_51466785的博客 575

Blender----利用DEM(tif)生成三维模型

利用DEM(tif)生成三维模型

LongJ_Sir的博客 5422

24GHz雷达DIY呼吸监测仪:用树莓派+TI IWR6843搭建生命体征检测系统(附Python代码)

本文详细介绍了如何利用树莓派和TI IWR6843毫米波雷达模块DIY非接触式呼吸监测仪。通过硬件选型、信号处理流水线设计和实时可视化系统搭建,实现高精度的生命体征检测,特别适合医疗健康和运动监测场景。附带的Python代码帮助开发者快速复现该系统。

rl6adventurer的博客 984

C语言 删除有序数组重复的元素

本篇文章介绍使用“双指针”的方法遍历有序数组,并完成数组重复元素的删除。

m0_74803157的博客 1187

芯片测试中的DC与AC模式详解:如何选择最适合你的测试方案?

本文深入解析了芯片测试中DC(直流)与AC(交流)模式的核心差异与互补性。DC测试关注静态电气特性,如固定型故障;而AC测试则聚焦于芯片在额定工作速度下的动态时序行为。文章从VLSI设计、电路模块、成本约束、可测试性设计和应用场景五大维度,提供了如何根据工艺节点、工作频率及具体需求,在testMode配置、时钟复位策略和输入输出接口设计中,平衡两种测试模式以制定最优方案的决策框架。

bb456的博客 1086

【LeetCode力扣题库】26. 删除排序数组中的重复项(简单)

原题目链接:26. 删除排序数组中的重复项 题目描述: 给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。 不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。 示例1: 给定数组 nums = [1,1,2], 函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。 你不需要考虑数组中超出新长度后面的元素。 示例2: 给定 nums = [0,0,1,...

一个平平无奇的攻城狮 2442

Open3D 使用RANSAC分割平面【2026最新版】

使用RANSAC从点云中分割平面,用segement_plane函数。博客长期更新,本文最新更新时间为:2026年2月28日。

点云侠的博客 37万+

24、汽车黑客技术全解析:诊断代码、车库创建与系统攻防

本文深入探讨了汽车黑客技术的核心内容,包括诊断代码模式与参数ID、创建开放车库社区、汽车系统相关技术、硬件与软件工具、攻击与防御手段,以及车辆通信与网络安全。无论你是汽车安全研究人员、爱好者还是开发者,都能从中获取全面的技术解析与实践指南。

Apple的专栏 226

LeetCode-26、删除排序数组中的重复项-简单

LeetCode-26、删除排序数组中的重复项-简单 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。 示例1: 给定数组 nums = [1,1,2], 函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。 ...

clover_my的博客 103

如何为 Claude Code 配置代理与网络环境

那么大概率不是软件问题,而是。因为 Claude Code 是运行在终端里的,不是浏览器。

sg_knight的专栏 3479

【Leetcode】【简单】【26. 删除排序数组中的重复项】【JavaScript】

题目描述 26. 删除排序数组中的重复项 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。 示例1: 给定数组 nums = [1,1,2], 函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1...

banxuanyu1918的博客 318

使用Python爬取在线图书馆的图书馆藏和阅读记录

通过使用Python编写爬虫程序,我们可以从在线图书馆上获取图书馆藏和阅读记录,帮助人们更好地管理和利用图书馆资源。本文简要介绍了爬虫程序的准备工作、网页解析和数据提取、数据的保存和处理的关键步骤,并提供了一个示例代码。在实际应用中,我们需要注意遵守在线图书馆的使用规则和爬虫道德准则,确保合法、合规地进行爬取操作。以上仅为概述,实际应用的过程中可能需要根据具体需求进行适当的调整和改进。

2201_76125393的博客 729

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

leetcode26.——删除排序数组中的重复项(简单,0)

文章目录题目解答1基于python 内置函数结果2从后往前遍历双指针(经典)感想 题目 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。 示例 1: 给定数组 nums = [1,1,2], 函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修...

dedell的博客 180

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

【LeetCode】C++ :简单题 - 26 删除排序数组中的重复项

26. 删除排序数组中的重复项 难度简单1761 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。 示例1: 给定数组 nums = [1,1,2], 函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。 你不需要考虑数组中超出新长度后面的元素。 示例2: 给定 nums = [0,0,1,...

weixin_44566432的博客 186

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

leetcode题:26. 删除排序数组中的重复项(简单)

一、题目描述:26. 删除排序数组中的重复项(简单) 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。 示例1: 给定数组 nums = [1,1,2], 函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。 ...

tankpanv的博客 193

【LeetCode简单题26】8-删除排序数组中的重复项

声明 1、红色 添加要改颜色的字体 指令是 添加要改颜色的字体 2、蓝色 添加要改颜色的字体 指令为 添加要改颜色的字体 3、绿色 添加要改颜色的字体 指令为 添加要改颜色的字体 4、粉色 添加要改颜色的字体 指令为 添加要改颜色的字体 题目 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。 不要使用额外的数组空间,你必须在原地修改...

时间停止的那刻 287

【Leetcode】——JavaScript——简单——26. 删除排序数组中的重复项

题目要求 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。 示例 1: 给定数组 nums = [1,1,2], 函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。 你不需要考虑数组中超出新长度后面的元素。 ...

LimonSea的博客 219

LeetCode -26.删除排序数组中的重复项 -简单

一、题目描述 示例: 说明: 二、解题思路 采用双指针法,分别定义一个慢指针i,一个快指针j,i指向已有的不重复的数组元素,j负责遍历数组。 双指针法在原地算法的基础上实现了类似“挑选”的功能,即从所有数组元素中,挑选出符合题目要求的元素,保存到数组的前面的元素中。 三、自写代码 class Solution { public int removeDuplicates(int[] nums) { if (nums.length == 0) return

weixin_42374413的博客 208

leetcode【简单】26、删除排序数组中的重复项

给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。 注意: 不使用额外空间 返回无重复的数组长度即可 思路:双指针 j遍历数组,如果和i相同,则i不动,j接着向后; 如果j和i不同,此时j和i之间要么紧邻,要么全是和i相同的数,把j处的数移到i后面即可 class Solution: def removeDuplicates(self, nums: List[int]) -> int: i=0 for j

qq_40707462的博客 190

leetcode 26. 删除排序数组中的重复项 简单

题目 分析:题目要求不但要返回最终数组长度还要修改数组。修改数组的操作很简单,交换数组中的两个元素,那么就要找出不同的元素并放在合适的位置上并且题目要求不能用额外的空间,那么我就想到用一个变量来维持当前要放置的位置,一个变量计算最终数组的长度,一个变量记录找到的不同的元素,最终返回计算最终数组的长度的变量即可。 上代码 class Solution { public int remove...

weixin_40208575的博客 102

LeetCode题库 26. 删除排序数组中的重复项(简单)

LeetCode题库 26. 删除排序数组中的重复项(简单) 原题 题目中对于传入形参是数组而返回值是整形的解释: 输入数组是以「引用」方式传递的,这意味着在函数里修改输入数组对于调用者是**可见** 的。 你可以想象内部操作如下: // nums 是以“引用”方式传递的。也就是说,不对实参做任何拷贝 int len = removeDuplicates(nums); // 在函数里修改输入数组对于调用者是可见的。 // 根据你的函数返回的长度, 它会打印出数组中该长度范围内的所有元素。 for (i.

qq_34514670的博客 192

力扣--26. 删除排序数组中的重复项(简单题)--双指针

力扣--26. 删除排序数组中的重复项(简单题)--双指针【题目描述】【示例】【双指针】【思路】【代码】【优化】 昨天去了趟医院,回来就不想写题了,空了一天,我检讨。。 今天先来一题简单题吧。这题还是比较简单的,但是之前没有想到可以用类似逻辑删除这种方法来处理,还是卡了一会儿,看了别人的解题思路才写的代码。 【题目描述】 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成

Catherinyy的博客 265

LeetCode-26-算法-删除排序数组中的重复项(简单)

给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。 不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。 示例1: 给定数组 nums = [1,1,2], 函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。 你不需要考虑数组中超出新长度后面的元素。 示例2: 给定 nums = [0,0,1,1,1,2,2,3,3,4], 函数应该返回新的长度 5, ...

Hello_JavaScript的博客 254
上一篇: Leetcode简单:21. 合并两个有序链表
下一篇: Leetcode简单:27. 移除元素
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

青少年编程小助手_Python

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值