千家信息网

LeetCode中怎么删除排序数组中的重复项

发表于:2025-01-31 作者:千家信息网编辑
千家信息网最后更新 2025年01月31日,这篇文章给大家介绍LeetCode中怎么删除排序数组中的重复项,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。一,删除排序数组中的重复项1,问题简述给定一个排序数组,你需要在 原地
千家信息网最后更新 2025年01月31日LeetCode中怎么删除排序数组中的重复项

这篇文章给大家介绍LeetCode中怎么删除排序数组中的重复项,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。


一,删除排序数组中的重复项

1,问题简述

给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。

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

2,示例描述

示例 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。

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


说明:

为什么返回数值是整数,但输出的答案是数组呢?

请注意,输入数组是以「引用」方式传递的,这意味着在函数里修改输入数组对于调用者是可见的。

你可以想象内部操作如下:

// nums 是以"引用"方式传递的。也就是说,不对实参做任何拷贝
int len = removeDuplicates(nums);

// 在函数里修改输入数组对于调用者是可见的。
// 根据你的函数返回的长度, 它会打印出数组中该长度范围内的所有元素。
for (int i = 0; i < len; i++) {
print(nums[i]);
}


3,解题思路

两种思路,(1)第一次,遍历数组时,让第一个元素当做"哨兵"节点,然后遍历数据进行后面元素的比对,不过每次遍历数组时都要记得更新"哨兵"节点的数据;(2),根据hashMap键值对集合进行操作

4,题解程序


import java.util.HashMap;
import java.util.Map;

public class RemoveDuplicatesTest2 {
public static void main(String[] args) {
int[] nums = {1, 1, 2};
int removeDuplicates = removeDuplicates2(nums);
System.out.println("removeDuplicates = " + removeDuplicates);
}

public static int removeDuplicates(int[] nums) {
int len = nums.length;
if (0 == len) {
return 0;
}
int prev = nums[0];
int newLen = 1;
for (int i = 1; i < len; i++) {
int num = nums[i];
if (num != prev) {
nums[newLen++] = num;
prev = num;
}
}
return newLen;
}

public static int removeDuplicates2(int[] nums) {
if (nums == null || nums.length == 0) {
return 0;
}
Map map = new HashMap<>(nums.length);
int index = 0;
for (int i = 0; i < nums.length; i++) {
int value = map.getOrDefault(nums[i], 0) + 1;
map.put(nums[i], value);
if (value <= 1) {
nums[index++] = nums[i];
}
}
return index;
}
}


关于LeetCode中怎么删除排序数组中的重复项就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

数组 元素 长度 函数 排序 输入 示例 内容 原地 哨兵 思路 数据 方式 更多 用者 空间 节点 中超 帮助 不对 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 服务器装不上系统 如何用阿里云服务器做爬虫 网络安全渗透测试大纲 服务器系统主要内容 无极传奇数据库编辑器教程 釆用敏捷软件开发的四个问题 网络安全宣传周演讲题目 索引数据库目录数据库 软件开发算理科还是工科 核动力厂网络安全技术 软件开发的主要方法有哪些 幻塔跨服务器能一起玩吗 远程怎么查看服务器操作系统 数据库技术的个人应用实例 源麦宝网络技术有限公司 苏州企业冷库软件开发 引文数据库是 新罗区城修蔚网络技术工作室 济南阳光互联网科技有限公司 不属于软件开发模式变更控制 健康的网络安全 现在用的数据库连接池 群晖同步服务器时快时慢 果蔬配送软件开发公司 服务器的三个电脑网口有什么区别 网络安全博览会河北 广州千指网络技术有限公司 湖北hp服务器金牌代理商 中央宣传部 软件开发公司 数据库资源占用情况
0