leetcode——26. 删除有序数组中的重复项
创始人
2025-05-30 02:04:41
0

在这里插入图片描述

文章目录

    • 🐨1. 题目
    • 🏹2. 思路
    • 🪃3. 代码实现

🐨1. 题目

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

示例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 <= nums[i] <= 104
  • nums 已按 升序 排列

🏹2. 思路

这里题目对空间复杂度做了要求,必须为 O(1) ,那么我们就不能开辟新的数组,只能在原数组上动手。题目还给出了一个条件——数组是有序的,这就意味着如果重复的元素一定是相邻的。
这样我们就可以考虑用双指针,因为要比较指向的内容是否相同,所以这里不能指向同一个位置,即我们设置一个前dst,一个后src
在这里插入图片描述

🪃3. 代码实现

注意
这个函数的返回值是去重后的数组长度。在函数执行的过程中,变量dst表示当前去重后的数组的最后一个元素的索引,因此实际上需要返回的是dst + 1。

int removeDuplicates(int* nums, int numsSize){int src = 1;int dst = 0;while(srcif(nums[dst] != nums[src]){nums[++dst] = nums[src++];}else{src++;}}return dst+1;
}

相关内容

热门资讯

北漂下班花60元亮马河上划一晚... 北漂打工人们咋爱上下班后去城市内河划水了?编辑|卢力麟 作者|徐金金设计|胖兔爱折腾的打工人又找到...
不卡锯!大艺A7-8805G电... 凭借扎实品质、强悍性能、人性化设计以及优秀的防卡锯能力,大艺A7-8805G锂电无刷电圆锯(以下简称...
麦当劳开启“我就喜欢薯条”活动... 01.东鹏特饮回应“创始人不喝自家产品”02.麦当劳开启“我就喜欢”23周年活动03.娃哈哈回应称纯...
41.5℃烤透欧洲!这款中国空... 出品丨花朵财经观察(FF-Finance)撰文丨华见41.5℃,德国气温连续两天刷新历史极值;40....
罕见,批量涨停!多重利好集中落... 医药股全线爆发!今日(6月29日)盘中,A股医药股直线拉升,板块指数涨幅超过6%。截至记者发稿,特一...
张震三年终"转正&q... 这种搭班组合具有合规与风控条线偏"严",投资与交易条线偏"活"的鲜明特征。文/每日财报 张恒前几...
7月1日起集中调价,近20家半... 21世纪经济报道记者 陈归辞 邓浩AI超级周期的高景气正在向上游卡点环节全面传导。截至6月29日午间...
车企遭三重压力测试:销量降、利... 2026年行至年中,中国汽车市场正经历一场罕见的多重压力测试。乘联分会披露的最新数据显示,今年1~5...
明修栈道暗度陈仓!沃什为9月“... 美联储主席凯文·沃什的鹰派姿态或许只是一场精心设计的烟幕。Academy Securities分析师...
投资中东石油致富?警方紧急拦截... 近日,湖北宜昌的一条快速公路上,上演了一场“追钱”大戏。原来,辖区居民李女士遭遇了电信诈骗,并已取现...