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判读数组中是否有重复值的示例
此处使用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++)
-
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中删除数组中重复元素方法探讨
问题:比如我有一个数组(元素个数为0哈),希望添加进去元素不能重复. 拿到这样一个问题,我可能会快速的写下代码,这里数组用ArrayList. 复制代码 代码如下: private static void testListSet(){ List<String> arrays = new ArrayList<String>(){ @Override public boolean add(String e) {
-
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使用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数组,去掉重复值、增加、删除数组元素的方法
如下所示: 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 删除数组元素与删除重复数组元素的代码
删除数组借助于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正则表达式实现提取需要的字符并放入数组【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检查数组是否有重复元素的方法
本文实例讲述了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数组,去掉重复值、增加、删除数组元素的实现方法
如下所示: 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
随机推荐
- shell 正则表达式详细整理
- 如何设计一个秒杀系统
- 基于jvm java内存区域的介绍
- Java8新特性Lambda表达式的一些复杂用法总结
- Python translator使用实例
- asp.net实现C#绘制太极图的方法
- JS实现点击链接切换显示隐藏内容的方法
- JavaScript获取DOM元素的11种方法总结
- 仿AS3实现PHP 事件机制实现代码
- C#基于正则表达式删除字符串中数字或非数字的方法
- PHP中if和or运行效率对比
- django开发之settings.py中变量的全局引用详解
- SQL中查找某几个字段完全一样的数据
- jQuery中append、insertBefore、after与insertAfter方法注意事项
- js中的replace方法使用介绍
- 解决JS中乘法的浮点错误的方法
- IIS7 经典模式和集成模式的区别分析
- Python中os.path用法分析
- 浅谈Node.js 子进程与应用场景
- 23种设计模式(15)java解释器模式