题目描述

给定一个已排序的数组,去除数组中的重复元素,只保留一个重复的元素,并且返回新的数组长度。

要求:

不要给数组分配额外的空间,你必须使用常量的内存大小进行原地操作。

例如:

给出数组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去除已排序数组中的重复元素相关推荐

  1. C++版 - 剑指offer面试题38:数字在已排序数组中出现的次数

    数字在已排序数组中出现的次数 提交网址: http://www.nowcoder.com/practice/70610bf967994b22bb1c26f9ae901fa2?tpId=13&t ...

  2. 二叉树的遍历(前序、中序、后序、已知前中序求后序、已知中后序求前序)

    二叉树的遍历(前序.中序.后序.已知前中序求后序.已知中后序求前序)   之前的一篇随笔(二叉树.前序遍历.中序遍历.后序遍历)只对二叉树的遍历进行了笼统的描述,这篇随笔重点对前.中.后序的遍历顺序进 ...

  3. java删除有序数组中的重复元素_算法刷刷刷Leetcode第26题删除排序数组中的重复项...

    给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度.不要使用额外的数组空间,你必须在原地修改输入数组 并在使用 O(1) 额外空间的条件下完成.示例 ...

  4. LeetCode 79单词搜索80删除排序数组中的重复项Ⅱ81.搜索旋转排序数组Ⅱ

    新人公众号(求支持):bigsai 专注于Java.数据结构与算法,一起进大厂不迷路! 算法文章题解全部收录在github仓库bigsai-algorithm,求star! 关注回复进群即可加入力扣打 ...

  5. java输出数组中的元素_java一行代码输出数组的所有元素内容

    如果要用java把一个数组的元素都输出到控制台的话,你要怎么做呢? 是通过一个循环去循环数组中的各个元素,然后输出吗? 像不像二维数组 今天我要说的是,可以通过一行代码就完成这个工作.是一样什么样的代 ...

  6. 去掉数组最后一个元素_leetcode 34. 在排序数组中查找元素的第一个和最后一个位置每天刷一道leetcode算法系列!...

    作者:reed,一个热爱技术的斜杠青年,程序员面试联合创始人 前文回顾: leetcode1. 两数之和--每天刷一道leetcode系列! leetcode2. 两数相加--每天刷一道leetcod ...

  7. java 生成不重复随机数_Java如何实现生成n个不重复的随机数 Java实现生成n个不重复的随机数代码...

    Java如何实现生成n个不重复的随机数?本篇文章小编给大家分享一下Java实现生成n个不重复的随机数代码,代码介绍的很详细,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看. 需 ...

  8. java数组合并排序_Java将两排序数组合并

    早些天给深圳芒果网投了一份简历,接到了面试电话,经过三轮面试,最后也拿到了offer.前两轮面试还好,问的问题都还答的出,到第三轮的时候,出了一道算法题,可能太紧张,思考许久也只给出了解题思路,没有将 ...

  9. java数组比较的头文件_Java和C++的数组比较

    Java: 数组的定义: 如下两种方式都可以: int array[]; int[] array; 注意:数组在定义后,不能直接使用.必须在初始化后才能使用. 初始化有两种方式: 1.静态初始化: i ...

最新文章

  1. SVD理论以及Python实现
  2. 多线程学习-基础(四)常用函数说明:sleep-join-yield
  3. 通往奥格瑞玛的道路(洛谷 1462)
  4. 源码解读_Go Map源码解读之Map迭代
  5. 山西计算机等级考试科目一模拟试题,2011山西省计算机等级考试试题 二级ACCESS一点通科目一...
  6. JSP(五):属性范围
  7. InvisionApp学习
  8. 汇编语言(十一)之统计非数字字符个数
  9. 22岁何同学自制硬核AirDesk!苹果都做不来的超大充电桌,稚晖君点赞
  10. 女程序员 一直从事着软件研发的工作
  11. [傅里叶变换及其应用学习笔记] 七. 傅里叶正(反)变换复习
  12. 计算机飞行模式无法关闭,Win10开启飞行模式之后无法关闭退出怎么解决
  13. Google字典API与语音库
  14. css flex实现经典的三栏布局
  15. 互联网广告行业术语及缩写
  16. 叉叉助手开发环境安卓版_按键精灵安卓版零基础系列教程基础环境知识讲解
  17. Codeforces Young Physicist
  18. namenode无法启动,There appears to be a gap in the edit log. We expected txid 10323, but got txid 10324.
  19. 大连新计划__为什么企业要开发APP软件?
  20. GPU运算能力对比(详细)

热门文章

  1. [原]SQL解决“俯瞰金字塔”矩阵
  2. 学习前端你必须看过这几本书!
  3. Spring Cloud Config 集中式配置
  4. 基于FPGA的直流电机
  5. python非官方的二进制扩展包下载地址
  6. png库结合zlib库使用出现的一个链接问题的解决
  7. WP老杨解迷:开发生态两极化和榜单乱象
  8. ASP.NET 5系列教程 (二):Hello World
  9. vb.net与c#相互转换工具
  10. linux c++编写访问mysql程序,访问数据库出错,解决方法