java删除有序数组中的重复元素_java去除已排序数组中的重复元素
题目描述
给定一个已排序的数组,去除数组中的重复元素,只保留一个重复的元素,并且返回新的数组长度。
要求:
不要给数组分配额外的空间,你必须使用常量的内存大小进行原地操作。
例如:
给出数组A=[1,1,2],你的函数调用之后必须返回长度length=2,并且A现在变成[1,2]。
输入
一个已排序的数组,例如[1,1,2]。
输出
返回数组新的长度,例如length=2。
快慢指针法
设置fast指针遍历数组,slow指针指向不重复元素的下一位。
public static int removeDuplicates(int[] nums)
{
if (nums.length < 1)
return nums.length;
int slow = 1;
for (int fast = 1; fast < nums.length; fast++) {
if (nums[fast] != nums[slow - 1]) {
nums[slow++] = nums[fast];
}
}
return slow;
}
动画演示:
扩展
去除已排序数组中的重复元素,保留指定位数。
public static int removeDuplicatesN(int[] nums, int repeatN)
{
if (nums.length <= repeatN)
return nums.length;
int index = repeatN;
for (int i = repeatN; i < nums.length; i++) {
if (nums[i] != nums[index - repeatN]) {
nums[index++] = nums[i];
}
}
return index;
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
java删除有序数组中的重复元素_java去除已排序数组中的重复元素相关推荐
- C++版 - 剑指offer面试题38:数字在已排序数组中出现的次数
数字在已排序数组中出现的次数 提交网址: http://www.nowcoder.com/practice/70610bf967994b22bb1c26f9ae901fa2?tpId=13&t ...
- 二叉树的遍历(前序、中序、后序、已知前中序求后序、已知中后序求前序)
二叉树的遍历(前序.中序.后序.已知前中序求后序.已知中后序求前序) 之前的一篇随笔(二叉树.前序遍历.中序遍历.后序遍历)只对二叉树的遍历进行了笼统的描述,这篇随笔重点对前.中.后序的遍历顺序进 ...
- java删除有序数组中的重复元素_算法刷刷刷Leetcode第26题删除排序数组中的重复项...
给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度.不要使用额外的数组空间,你必须在原地修改输入数组 并在使用 O(1) 额外空间的条件下完成.示例 ...
- LeetCode 79单词搜索80删除排序数组中的重复项Ⅱ81.搜索旋转排序数组Ⅱ
新人公众号(求支持):bigsai 专注于Java.数据结构与算法,一起进大厂不迷路! 算法文章题解全部收录在github仓库bigsai-algorithm,求star! 关注回复进群即可加入力扣打 ...
- java输出数组中的元素_java一行代码输出数组的所有元素内容
如果要用java把一个数组的元素都输出到控制台的话,你要怎么做呢? 是通过一个循环去循环数组中的各个元素,然后输出吗? 像不像二维数组 今天我要说的是,可以通过一行代码就完成这个工作.是一样什么样的代 ...
- 去掉数组最后一个元素_leetcode 34. 在排序数组中查找元素的第一个和最后一个位置每天刷一道leetcode算法系列!...
作者:reed,一个热爱技术的斜杠青年,程序员面试联合创始人 前文回顾: leetcode1. 两数之和--每天刷一道leetcode系列! leetcode2. 两数相加--每天刷一道leetcod ...
- java 生成不重复随机数_Java如何实现生成n个不重复的随机数 Java实现生成n个不重复的随机数代码...
Java如何实现生成n个不重复的随机数?本篇文章小编给大家分享一下Java实现生成n个不重复的随机数代码,代码介绍的很详细,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看. 需 ...
- java数组合并排序_Java将两排序数组合并
早些天给深圳芒果网投了一份简历,接到了面试电话,经过三轮面试,最后也拿到了offer.前两轮面试还好,问的问题都还答的出,到第三轮的时候,出了一道算法题,可能太紧张,思考许久也只给出了解题思路,没有将 ...
- java数组比较的头文件_Java和C++的数组比较
Java: 数组的定义: 如下两种方式都可以: int array[]; int[] array; 注意:数组在定义后,不能直接使用.必须在初始化后才能使用. 初始化有两种方式: 1.静态初始化: i ...
最新文章
- SVD理论以及Python实现
- 多线程学习-基础(四)常用函数说明:sleep-join-yield
- 通往奥格瑞玛的道路(洛谷 1462)
- 源码解读_Go Map源码解读之Map迭代
- 山西计算机等级考试科目一模拟试题,2011山西省计算机等级考试试题 二级ACCESS一点通科目一...
- JSP(五):属性范围
- InvisionApp学习
- 汇编语言(十一)之统计非数字字符个数
- 22岁何同学自制硬核AirDesk!苹果都做不来的超大充电桌,稚晖君点赞
- 女程序员 一直从事着软件研发的工作
- [傅里叶变换及其应用学习笔记] 七. 傅里叶正(反)变换复习
- 计算机飞行模式无法关闭,Win10开启飞行模式之后无法关闭退出怎么解决
- Google字典API与语音库
- css flex实现经典的三栏布局
- 互联网广告行业术语及缩写
- 叉叉助手开发环境安卓版_按键精灵安卓版零基础系列教程基础环境知识讲解
- Codeforces Young Physicist
- namenode无法启动,There appears to be a gap in the edit log. We expected txid 10323, but got txid 10324.
- 大连新计划__为什么企业要开发APP软件?
- GPU运算能力对比(详细)