我是靠谱客的博主 缥缈水蜜桃,这篇文章主要介绍如何高效去除数组里重复数字,看完你就明白了,现在分享给大家,希望可以做个参考。

  • 题目描述: 给定一个整形数组,例如:21,23,25,15,15,23,98,5,21  去除重复项之后保留的数组为25,98,5.
  • java语言解法:
    复制代码
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    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).

最后

以上就是缥缈水蜜桃最近收集整理的关于如何高效去除数组里重复数字,看完你就明白了的全部内容,更多相关如何高效去除数组里重复数字内容请搜索靠谱客的其他文章。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部