
算法:从有序数组中移除重复的数据26. Remove Duplicates from Sorted Array
记录前一个元素: 遍历数组:从第二个元素开始,逐个检查是否重复。 修改数组:当发现一个不同于 边界检查:首先检查数组是否为空,如果是则返回0。 初始化变量: 遍历数组:从第二个元素开始遍历,如果元素与 返回索引:遍历结束后返回
发布日期:2021-05-26 07:23:07
浏览次数:12
分类:精选文章
本文共 858 字,大约阅读时间需要 2 分钟。
要解决问题,我们需要在给定已经排序的数组中删除重复元素,并返回新的长度。以下是问题的详细分析和解决方案:
问题分析
- 给定一个排序好的数组
nums
,我们需要确保每个元素只出现一次,同时保持数组的有序性。 - 修改必须在原地进行,这意味着不能分配额外内存去创建新的数组。
- 返回值是一个整数,表示处理后数组的新长度。
方法思路
我们将使用两个指针来解决问题:
pre
记录处理过的元素,避免重复。pre
的元素时,将其赋值给当前结果位置,并更新 pre
和索引。解决代码
public class Solution { public int removeDuplicates(int[] nums) { if (nums == null || nums.length == 0) return 0; int pre = nums[0]; int index = 1; for (int k = 1; k < nums.length; k++) { if (nums[k] != pre) { nums[index++] = nums[k]; pre = nums[k]; } } return index; }}
代码解释
pre
记录第一个元素,index
记录结果数组的位置从1开始。pre
不同,则将其赋值给当前结果位置,并更新 pre
。index
,表示处理后的新长度。这种方法在 O(n) 时间复杂度内完成任务,且在 O(1) 内外存,因此是高效且节省内存的。
发表评论
最新留言
表示我来过!
[***.240.166.169]2025年04月16日 18时23分36秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
解决 matplotlib 中文显示乱码的问题
2023-01-23
解决打开 json 文件中文乱码的问题
2023-01-23
计算机网络基础:DHCP服务的部署
2023-01-23
计算机网络基础:DNS 部署与安全
2023-01-23
计算机网络基础:NAT 网络地址转换
2023-01-23
计算机网络基础:PKI(公钥基础设施)
2023-01-23
计算机网络基础:VLAN(虚拟局域网)
2023-01-23
计算机网络基础:文件共享服务器(注册表更改)
2023-01-23
计算机网络基础:用户和组管理
2023-01-23
计算机网络基础:简单渗透
2023-01-23
计算机网络模型-TCP/IP协议簇
2023-01-23
基于Arduino的ESP32-S3 + OLED(4pin)的文字取模
2023-01-23
基于Arduino的ESP32-S3 +光敏传感器(4pin)
2023-01-23
基于Arduino的ESP32-S3 + 1.3寸OLED(4pin)
2023-01-23
基于Arduino的ESP32-S3 + HCSR04(4pin)超声波传感器
2023-01-23
基于Arduino的ESP32-S3 +DS18B20(3pin)
2023-01-23
基于任意单片机的继电器模块应用全解析
2023-01-23