概述
- 题目描述: 给定一个整形数组,例如:21,23,25,15,15,23,98,5,21 去除重复项之后保留的数组为25,98,5.
- java语言解法:
public class ArrayViewUtils { /** * @desc 删除数组里重复的数字,只保留不重复的数字。 * 时间复杂度分析为O(n) * @param arr 数组 * @return arr[] */ public static int[] delRepeatFromArray(int[] arr) { if(null==arr){ return null; } int length = arr.length; if(length<1){ return null; } //统计重复出现数字的总个数 int repeatSum=0; HashMap<Integer, Integer> map = new HashMap<>(length,1.0F); for (int i = 0; i <length ; i++) { //存在重复则value大于1不存在重复 value 等于1 if(map.containsKey(Integer.valueOf(arr[i]))){ map.put(arr[i],map.get(arr[i])+1); if(map.get(arr[i])==2){ repeatSum=repeatSum+1; } repeatSum=repeatSum+1; }else{ map.put(arr[i],1); } } int[] resultArr=new int[length-repeatSum]; int m=0; for (int i = 0; i <length ; i++) { if(map.get(arr[i])==1){ resultArr[m]=arr[i]; m++; } } return resultArr; } public static void main(String[] args) { int[] arr1={1,22,58,1,69,55,11,11,58,2,3,5,2,99}; int[] resultArr1 = ArrayViewUtils.delRepeatFromArray(arr1); for (int i = 0,len=resultArr1.length; i <len ; i++) { System.out.println(resultArr1[i]+" ,"); } } }
- 利用hashMap 的特性,一次循环,key则是数组里的数字,value记录数组里的数字出现的次数,大于1则重复出现。
- 再一次循环数组,把不重复的数字记录到新的数组里。
- 这里可以分析到时间复杂度为O(n),空间复杂度 新建里数组和map,复杂度也为O(n).
最后
以上就是丰富店员为你收集整理的如何高效去除数组里重复数字,看完你就明白了的全部内容,希望文章能够帮你解决如何高效去除数组里重复数字,看完你就明白了所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复