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

26. 删除有序数组中的重复项(简单系列)

给你一个 升序排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 nums 中唯一元素的个数。

考虑 nums 的唯一元素的数量为 k ,你需要做以下事情确保你的题解可以被通过:

更改数组 nums ,使 nums 的前 k 个元素包含唯一元素,并按照它们最初在 nums 中出现的顺序排列。nums 的其余元素与 nums 的大小不重要。
返回 k 。
判题标准:

系统会用下面的代码来测试你的题解:

int[] nums = […]; // 输入数组
int[] expectedNums = […]; // 长度正确的期望答案

int k = removeDuplicates(nums); // 调用

assert k == expectedNums.length;
for (int i = 0; i < k; i++) {
assert nums[i] == expectedNums[i];
}
如果所有断言都通过,那么您的题解将被 通过。

示例 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 已按 升序 排列

第一种:

public int removeDuplicates(int[] nums) {
//获取数组 nums 的长度,如果长度为0,直接返回0,因为数组中没有重复元素int n = nums.length;if (n== 0){return 0;}
//定义两个指针 fast 和 slow,初始值都为1。int fast =1;int slow =1;
//通过遍历数组,比较 fast 指针和 fast-1 指针对应的元素是否相等。
//如果不相等,说明找到了一个新的不重复元素,将其赋值给 slow 指针对应的位置,并将 slow 指针向前移动一位。
//无论相等与否,fast 指针都应向前移动一位。while(fast<n){if(nums[fast] != nums[fast-1]){nums[slow]= nums[fast];++slow; }++fast;}//返回 slow 的值,即去除重复元素后数组的长度。return slow;
}

第二种方式

public int removeDuplicates(int[] nums) {
//获取数组 nums 的长度,如果长度为0,直接返回0,因为数组中没有重复元素int n = nums.length;if (n== 0){return 0;}int p =0; //初始化指针p为0int q =1; // 初始化指针q为1while(q<n){ // 当指针q小于n时执行循环if(nums[p] != nums[q]){ // 如果nums中指针p和指针q的元素不相等nums[p+1] =nums[q]; // 将nums中指针q的元素赋值给指针p+1的位置++p; // 指针p向右移动一位}++q; // 指针q向右移动一位}return p+1; // 返回最终不重复的元素的个数  
}
http://www.lryc.cn/news/138188.html

相关文章:

  • 【linux】基本指令(二)【man、echo、cat、cp】
  • 【视频】Python用LSTM长短期记忆神经网络对不稳定降雨量时间序列进行预测分析|数据分享...
  • 2023年7月京东空气净化器行业品牌销售排行榜(京东运营数据分析)
  • 原生小案例:如何使用HTML5 Canvas构建画板应用程序
  • Electron 报gpu_process_host.cc(951)] GPU process launch faile错误
  • 每天一分享#读up有感#
  • threejs贴图系列(一)canvas贴图
  • taro react/vue h5 中的上传input onchange 值得区别
  • (AcWing) 任务安排(I,II,III)
  • Excel筛选后复制粘贴不连续问题的解决
  • 【SCSS变量】$ | | var | @for | @include | @function | @each 等常用方法使用
  • iOS 17 及 Xcode 15.0 Beta7 问题记录
  • docker-maven-plugin直接把镜像推到私有仓库
  • 2023年机器学习项目—布匹缺陷检测
  • RabbitMQ---订阅模型分类
  • pycharm添加虚拟环境以及虚拟环境安装pytorch
  • Git企业开发控制理论和实操-从入门到深入(三)|分支管理
  • 【VsCode】SSH远程连接Linux服务器开发,搭配cpolar内网穿透实现公网访问(1)
  • LC-1267. 统计参与通信的服务器(枚举 + 计数)
  • Linux TCP协议——三次握手,四次挥手
  • 人机对抗智能-部分可观测异步智能体协同(POAC)
  • 数学——七桥问题——图论
  • python 模块lxml 处理 XML 和 HTML 数据
  • SpringBoot 统⼀功能处理
  • hadoop 报错 java.io.IOException: Inconsistent checkpoint fields
  • workbench连接MySQL8.0错误 bad conversion 外部组件 异常
  • Qt Scroll Area控件设置,解决无法显示全部内容,且无法滚动显示问题。
  • 【Java架构-包管理工具】-Maven私服搭建-Nexus(三)
  • 守护进程(精灵进程)
  • csdn冷知识:如何在csdn里输入公式或矩阵