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数组,去掉重复值、增加、删除数组元素的实现方法
如下所示: import java.util.List; import java.util.ArrayList; import java.util.Set; import java.util.HashSet; public class lzwCode { public static void main(String [] args) { testA(); System.out.println("==========================="); testB(); System
-
java中删除数组中重复元素方法探讨
问题:比如我有一个数组(元素个数为0哈),希望添加进去元素不能重复. 拿到这样一个问题,我可能会快速的写下代码,这里数组用ArrayList. 复制代码 代码如下: private static void testListSet(){ List<String> arrays = new ArrayList<String>(){ @Override public boolean add(String e) {
-
java使用Hashtable过滤数组中重复值的方法
本文实例讲述了java使用Hashtable过滤数组中重复值的方法.分享给大家供大家参考,具体如下: package org.eline.core.web.support; import java.util.Hashtable; /***************************** * * @author zdw * */ public class ObjectFilter { public static void main(String[] args) { // String 测试 S
-
java求数组元素重复次数和java字符串比较大小示例
复制代码 代码如下: /** * Name: 求数组中元素重复次数对多的数和重复次数 * Description: * 数组中的元素可能会重复,这个方法可以找出重复次数最多的数,同时可以返回重复了多少次. * 但需要知道这个数组中最大的元素是多少,如果无法确定,就悲剧啦~ * * @param array目标数组: * max数组中数据的最大值: * @return 返回一个包含重复次数最多的数(value)和重复次数(maxCount)的map集合: *
-
java 删除数组元素与删除重复数组元素的代码
删除数组借助于list 复制代码 代码如下: private String[] removePaths(String path, String[] srcpaths) { List<String> list = new ArrayList<String>(); int k = srcpaths.length;//原字符串长度 int i=0; while(i<k){ if(!srcpaths[i].equals(path)){ list.add(srcpat
-
Java数组,去掉重复值、增加、删除数组元素的方法
如下所示: import java.util.List; import java.util.ArrayList; import java.util.Set; import java.util.HashSet; public class lzwCode { public static void main(String [] args) { testA(); System.out.println("==========================="); testB(); System
-
java检查数组是否有重复元素的方法
本文实例讲述了java检查数组是否有重复元素的方法.分享给大家供大家参考.具体实现方法如下: //判断数组中是否有重复值 public static boolean checkRepeat(String[] array){ Set<String> set = new HashSet<String>(); for(String str : array){ set.add(str); } if(set.size() != array.length){ return false;//有重
-
java正则表达式实现提取需要的字符并放入数组【ArrayList数组去重复功能】
本文实例讲述了java正则表达式实现提取需要的字符并放入数组.分享给大家供大家参考,具体如下: 这里演示Java正则表达式提取需要的字符并放入数组,即ArrayList数组去重复功能. 具体代码如下: package com.test.tool; import java.util.ArrayList; import java.util.HashSet; import java.util.regex.*; public class MatchTest { public static void ma
-
Java替换int数组中重复数据的方法示例
本文实例讲述了Java替换int数组中重复数据的方法.分享给大家供大家参考,具体如下: package test; import java.util.HashSet; public class TestList { /** * 根据传递过来的参数过滤掉重复数据 * @param number:需要过滤掉的数据 * @return:筛选好的新数组 */ public static int[] Filter(int[] number){ HashSet<Integer> hs=new HashSe
-
Java实现数组去除重复数据的方法详解
本文实例讲述了Java实现数组去除重复数据的方法.分享给大家供大家参考,具体如下: 前一段时间被面试问到:如果一个数组中有重复元素,用什么方法可以去重?一时间会想到用一种方法,但是后来查阅资料后发现,有好多方法可以实现,现在就总结一下,比较简单的几种. 一.用List集合实现 int[] str = {5, 6, 6, 6, 8, 8, 7,4}; List<Integer> list = new ArrayList<Integer>(); for (int i=0; i<s
-
java判读数组中是否有重复值的示例
此处使用int[]数组示范 复制代码 代码如下: public static void main(String[] args) { int[] arry={1,10,5,8,11,100,99,10}; //用于判断是否有重复值的标记 boolean flag=false; for (int i = 0; i < arry.length; i++) { int temp=arry[i]; int count=0; for (int j = 0; j < arry.length; j++)
随机推荐
- jsp-解决文件上传后重启Tomcat时文件自动删除问题
- MySQL错误Forcing close of thread的两种解决方法
- jQuery事件绑定与解除绑定实现方法
- 全面了解构造函数继承关键apply call
- 有关tomcat内存溢出的完美解决方法
- 实例讲解Java并发编程之变量
- Oracle中命名块之存储过程的详解及使用方法
- Cookie 小记
- Apache服务器下防止图片盗链的办法
- php+mysqli批量查询多张表数据的方法
- Javascript 制作图形验证码实例详解
- JavaScript setTimeout和setInterval的使用方法 说明
- C语言实现的ls命令源码分享
- JavaScript中windows.open()、windows.close()方法详解
- jQuery实现底部浮动窗口效果
- Lua实现split函数
- dim函数第三个参数设置截取字符的长度问题
- iOS 设置UILabel的行间距并自适应高度的方法
- js实现图片轮换效果代码
- 128进制加密数据示例分享