当前位置: 首页 > news >正文

JAVA练习362- 删除有序数组中的重复项 II

题目概览

给你一个有序数组nums,请你原地删除重复出现的元素,使得出现次数超过两次的元素只出现两次,返回删除后数组的新长度。

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

说明:

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

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

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

//nums是以“引用”方式传递的。也就是说,不对实参做任何拷贝 int len = removeDuplicates(nums); // 在函数里修改输入数组对于调用者是可见的。 // 根据你的函数返回的长度, 它会打印出数组中该长度范围内的所有元素。 for (int i = 0; i < len; i++) { print(nums[i]); }

示例 1:

输入:nums = [1,1,1,2,2,3]输出:5, nums = [1,1,2,2,3]解释:函数应返回新长度 length =5, 并且原数组的前五个元素被修改为1, 1, 2, 2, 3。 不需要考虑数组中超出新长度后面的元素。

示例 2:

输入:nums = [0,0,1,1,1,1,2,3,3]输出:7, nums = [0,0,1,1,2,3,3]解释:函数应返回新长度 length =7, 并且原数组的前七个元素被修改为0, 0, 1, 1, 2, 3, 3。不需要考虑数组中超出新长度后面的元素。

提示:

  • 1 <= nums.length <= 3 * 104
  • -104 <= nums[i] <= 104
  • nums已按升序排列

来源:80. 删除有序数组中的重复项 II - 力扣(LeetCode)

解题分析

方法:三指针

定义三个指针 i,j,k 分别指向 头、头+1、头,那么:

  1. 当 nums[ i ] == nums[ j ] 时,有重复元素,不断移动 j 即 j++ 直到不相等,然后将 nums[ k ] 设置为 nums[ i ],由于我们是要保留两个元素,因此还要看 j - i 是否大于 1,大于 1 继续将 nums[ k + 1 ] 设置为 nums[ i ],最后 i 移动到 j 的位置,j 往后移动一位,k 移动到最近一个没设置值的位置,继续重复操作
  2. 当 nums[ i ] != nums[ j ] 时,没有重复元素,将 nums[ k ] 设置为 nums[ i ],所有指针往后移动一位即可
  3. 当 k >= n 时,结束遍历

时间复杂度:O(n)
空间复杂度:O(1)

class Solution { public int removeDuplicates(int[] nums) { int n = nums.length; if (n == 0) { return 0; } int i = 0, j = 1, k = 0; while(i < n && k < n) { while(j < n && nums[i] == nums[j]) { j++; } nums[k++] = nums[i]; if (j - i > 1) { nums[k++] = nums[i]; } i = j; j++; } return k; } }
http://www.jsqmd.com/news/1269882/

相关文章:

  • 10分钟完成黑苹果配置:OpCore Simplify终极简化指南
  • zerorpc-node核心功能揭秘:跨语言通信、心跳机制与高效消息处理
  • deliverzler安全最佳实践:保护用户数据与支付信息的完整方案
  • CC13x2/CC26x2 I2S音频开发:从寄存器配置到无线同步实战
  • 2026寄件省钱干货:快递社和妈妈寄大件全解析 - 快递物流实时资讯
  • Tabby终极指南:5分钟快速上手现代化终端工具
  • 2026 深圳靠谱搬家公司全梳理|全域覆盖、透明报价无套路,附各品牌联系电话 - 厚道搬家
  • claude_code - 心识
  • 2026佛山商务日语机构测评 - 互联网科技品牌测评
  • RTOS-F429-HAL-基础内容认识(2026/7/26)
  • 日记第16天——天道
  • GPU显存不足导致AI放大崩坏,实时修复方案全解析,含TensorRT加速部署代码(附可复现Colab Notebook)
  • Google Cloud AI驱动云业务增长:从模型到服务的商业化落地
  • 专科生论文降AI检测率实战指南与工具推荐
  • 2026郴州黄金回收哪家好?正规实体门店排行榜避坑指南 - 小仙贝贝
  • CC2520无线通信开发实战:从硬件配置到软件架构与避坑指南
  • GetQzonehistory:一键备份QQ空间全部历史说说,永久保存青春记忆
  • AI SDK终极指南:如何用统一API构建多模型AI应用
  • 深度解析上海二手名表回收行情:全套与单表的价格差异分析 - 讯息早知道
  • Temu新手应该自学还是找陪跑?三种学习路径的成本与差异 - 麦克杰
  • 雷霆的一天
  • CC13x2/CC26x2 AUX ADC与模拟外设:事件驱动低功耗设计实战
  • 5个步骤掌握Reloaded-II:终极.NET游戏模组框架完整指南
  • 从零搭建VR开发环境:Unity+OpenXR+Quest全流程避坑指南
  • 【lssvm分类】基于粒子群算法优化最小二乘支持向量机lssvm实现数据分类matlab代码
  • 2026年7月全新万和燃气灶售后服务电话24小时400人工热线全面正式启用公告 - 全国网点服务中心
  • Vivliostyle.js开发者入门:从核心库到React组件的完整实践路线
  • 2026潮汕地接旅游TOP8推荐 预约须知及选择指南 - 纯玩旅游推荐官
  • 三星固件下载工具Bifrost:跨平台一站式解决方案
  • 2026年7月全新帅康燃气灶售后服务电话24小时400人工热线全面正式启用公告 - 全国网点服务中心