千家信息网

​LeetCode如何删除排序数组中的重复项

发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,这篇文章主要介绍了LeetCode如何删除排序数组中的重复项,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。题意给定一个排序数组,你需要
千家信息网最后更新 2025年12月02日​LeetCode如何删除排序数组中的重复项

这篇文章主要介绍了LeetCode如何删除排序数组中的重复项,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

题意


给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。
不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。

样例


示例 1:

给定数组 nums = [1,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。

你不需要考虑数组中超出新长度后面的元素。

题解

数组完成排序后,我们可以放置两个指针 i 和 j,其中 i 是慢指针,而 j是快指针。只要 nums[i] = nums[j] ,我们就增加 j 以跳过重复项。
当我们遇到 nums[j] ≠nums[i] 时,跳过重复项的运行已经结束,因此我们必须把它(nums[j])的值复制到 nums[i + 1]。然后递增 i,接着我们将再次重复相同的过程,直到 j 到达数组的末尾为止。
时间复杂度:O(n),假设数组的长度是 n,那么 i 和 j 分别最多遍历 n 步。
空间复杂度:O(1)。

public int removeDuplicates(int[] nums) {
if (nums.length == 0) return 0;
int i = 0;
for (int j = 1; j < nums.length; j++) {
if (nums[j] != nums[i]) {
i++;
nums[i] = nums[j];
}
}
return i + 1;
}

感谢你能够认真阅读完这篇文章,希望小编分享的"LeetCode如何删除排序数组中的重复项"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!

数组 元素 长度 排序 篇文章 指针 空间 复杂 两个 函数 原地 复杂度 示例 中超 相同 价值 兴趣 再次 同时 时间 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 菏泽软件开发费用 江苏大型软件开发市场报价 美国软件开发哪里的为主 网络安全宣传稿1200字 手写签批软件开发 网络安全知识讲座知识 邵阳市计算机软件开发编程 软件开发什么地方花钱 怎样登录三星香港服务器 万方数据库检索 dnf怀旧服数据库 60 西安中国银行软件开发中心钟华剑 自己搭建任务管理服务器 戴尔服务器风扇转数调节 甘肃网络安全宣传发布会 禁毒教育网络安全手抄报图片 数据库 产品表 职业学校学计算机数据库管理 小型服务器和交换机辐射安全距离 为什么我的服务器总是出错 大学生网络安全与信息化教学 关于网络安全的歌伴奏 国内网络技术排名 网络安全宣传漫画简笔 西安软件开发需要多少钱 如何预防网络安全宣传片 上海税控服务器管理系统 网页打开找不到服务器或DNS 网络数据库实验目的 徐汇区互联网软件开发大概费用
0