我是靠谱客的博主 丰富店员,最近开发中收集的这篇文章主要介绍如何高效去除数组里重复数字,看完你就明白了,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

  • 题目描述: 给定一个整形数组,例如: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).

最后

以上就是丰富店员为你收集整理的如何高效去除数组里重复数字,看完你就明白了的全部内容,希望文章能够帮你解决如何高效去除数组里重复数字,看完你就明白了所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(66)

评论列表共有 0 条评论

立即
投稿
返回
顶部