精华内容
下载资源
问答
  • 判断数组中是否存在重复的元素;数组查重;

          我们经常遇到这样的问题,判断一个数组中是否含有重复的元素,解决的办法通常有许多种,这里介绍一种常用的思路。

     

          判断数组中元素是否重复,则需要对数组中的元素进行两两比较,如果有任意一组元素相等,则该数组中的元素存在重复,如果任意一组元素都不想等,则表示数组中的元素不重复。

    实现思路:我们假设数组中的元素不重复,两两比较数组中的元素,使用数组中的第一个元素和后续所有元素比较,接着使用数组中的第二个元素和后续元素比较,依次类推实现两两比较,如果有一组元素相同,则数组中存储重复,结束循环。把比较的结果存储在一个标志变量里,最后判断标志变量的值即可。

     

     

     /**
      * 判断整型数组中是否含有重复的元素
      * @param arr
      */
     private void checkIsRepeat(int[] arr){
     
    boolean flag = true;   //假设不重复 
    for(int i = 0;i < arr.length-1;i++){ //循环开始元素 
        for(int j = i + 1;j < arr.length;j++){ //循环后续所有元素 
        //如果相等,则重复 
        if(arr[i] == arr[j]){ 
         flag = false; //设置标志变量为重复 
         System.out.println("重复的值为:"+arr[i]);
         break;      //结束循环 
        } 
       } 
      } 
    //判断标志变量 
    if(flag){ 
      System.out.println("数组没有重复的元素"); 
    }else{ 
      System.out.println("数组含有重复的元素"); 
    }
     }

     

     

     

     

     

    运行一下程序,看结果如何

    这里初始化了两个数组,其中一组含有重复元素,别一组不含,输出结果显示符合预期。

    js版本

     //检查人员id是否有重复
      function          checkDataRepeat(arr){
                     var falg = false; //默认不重复
                     for(var i = 0; i< arr.length-1;i++){
                         for(var j =i+1 ;j<arr.length;j++){
                             if(arr[i].userId == arr[j].userId ){
                                 falg = true; //重复
                                 console.log('成员信息有重复,重复的 userId:'+arr[i].userId);
                                 break;
                             }
                         }
                     }                
                     return falg;
                },

     

    展开全文
  • 给定一个长度为N的数组,其中每个元素的取值范围都是1~N,判断数组中是否重复的数字 问题分析: 1.最简单暴力的方法是用双层嵌套对每两个数字进行比较,看是否相等但是时间复杂度太高,不予采用。 2.也可以先排...

    题目:

    给定一个长度为N的数组,其中每个元素的取值范围都是1~N,判断数组中是否有重复的数字

    问题分析:

    1.最简单暴力的方法是用双层嵌套对每两个数字进行比较,看是否相等但是时间复杂度太高,不予采用。
    2.也可以先排好序,然后遍历数组,y进行相邻元素的比较,同样时间复杂度太高,不予采用。
    3.也可以开辟一个新数组,用来记录原数组中每个元素出现的次数,但增大了空间开销。
    4.假如数组中没有重复的数字,即1~N每个数字出现一次,那么该数组的和一定为N*(N+1)/2。相反,如果数组的和不是N*(N+1)/2
    就说明出现了相同的数字。所以只要遍历一次数组,计算数组的和然后与N*(N+1)/2比较即可解决问题。

    package dataStructure;
    
    public class MyRepeatNum {
    	static boolean isRepeatNum(int a[]) {
    		int sum = 0;
    		int n = a.length;
    		for(int i : a) {
    			sum += i;
    		}
    		if(sum == n*(n+1)/2) return false;
    		return true;
    		
    	}
    	public static void main(String[] args) {
    		int array_1[] = {1,2,3,4,5};
    		int array_2[] = {2,2,3,3,6};
    		System.out.println("数组array_1中是否出现了重复数字:"+isRepeatNum(array_1));
    		System.out.println("数组array_2中是否出现了重复数字:"+isRepeatNum(array_2));
    	}
    }
    
    
    展开全文
  • var arr=[1,3,5,7,9,9,10,10,11,12,34,3,6,92,1];... //默认无重复 for (let index = 0; index < arr.length; index++) { for (let i = index+1; i < arr.length; i++) { if ( arr[index]== arr[i] ) { temp
    var arr=[1,3,5,7,9,9,10,10,11,12,34,3,6,92,1];
    var tempbool = false; //默认无重复
            for (let index = 0; index < arr.length; index++) {
              for (let i = index+1; i < arr.length; i++) {
                if ( arr[index]== arr[i] ) {
                  tempbool = true;
                }
              }
            }
            if (tempbool) {
             console.log('存在重复数据!');
            }
    
    展开全文
  • Java中判断数组中是否重复 可以使用hashmap 来判断 Map<Integer,Integer> h = new HashMap<Integer,Integer>(); for(int i=0;i<=4;i++){ if(h.containsKey(numbers[i])){ int ...

    Java中判断数组中是否有重复

    1. 可以使用hashmap 来判断

      Map<Integer,Integer> h = new HashMap<Integer,Integer>();
              for(int i=0;i<=4;i++){
                  if(h.containsKey(numbers[i])){
                      int k = h.get(numbers[i]);
                      h.put(numbers[i],++k);
                  }
                  else
                      h.put(numbers[i],1);
      
    2. 使用bitmap来判断

             if(((flag >> number) & 1) == 1) return false;
                  flag |= (1 << number);
      

    主要来介绍一下这种方法,可能看起来有点迷糊,主要思想很简单

    这里面的flag=0,也就是说可以看成是一个位图,里面的所有的都是0,然后对1进行左移number位

    这句的目的就是把位图中的number置位1,也就是说如果数组中只有一个这个数字,那么这个位置就是1,否则,在进行判断的时候 &1 就变成了1 ,return false

    大家可以手画一下,可以更好地理解

    展开全文
  • java判断数组中是否存在重复元素 import java.util.HashSet; public class test2 { public static boolean cheakIsRepeat(int[] array) { HashSet<Integer> hashSet = new HashSet<Integer>(); for...
  • 判断数组中是否重复的数字。(原数组不必保留)   方法1. 对数组进行排序(快速,堆),然后比较相邻的元素是否相同。 时间复杂度为O(nlogn),空间复杂度为O(1)。 方法2. 使用bitmap方法。 定义长度为N/8的...
  • public bool IsRepeat(string[] yourValue) { Hashtable ht = new Hashtable(); for (int i = 0; i < yourValue.Length - 1; i++) { if(ht.Contains(yourValue[i])) { ...
  • 判断数组中是否存在重复数字

    千次阅读 2019-11-21 10:17:03
    数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是第一个重复的数字2。 我的...
  •  * 判断数组中是否重复值  *  * @param arr  * @return  */ function isRepeat(arr){  var hash = {};  for(var i in arr) {  if(hash[arr[i]])  return true;  hash[arr[i]]
  • 1 //判断数组中是否有相同的元素 2 function removeDuplElem(array) 3 { 4 var tempbool = ""; 5 for(var i=0; i<array.length; i++) 6 { 7 for(var j=i+1; j<array.len...
  • 方法一: 代码如下: var ary = new Array(“111...“数组中重复元素:” + ary[i]); break;外语屋 } } 方法二: 代码如下: var ary = new Array(“111″,”22″,”33″,”111”); var nary=ary.sort(); for(var i=
  • * @function 判断数组中是否重复项 * @description 注意判断数组长度大于等于2 * @param {array} arr 数组 * @returns {boolean} 有重复项,返回true * @author 天心天地生 2020-1-14 * */ isRepeat = arr =...
  • 需求:判断对象数组中是否存在重复项 ... 然后判断数组是否存在重复项即可。 注:此方法适用于单个决定性条件导致重复的对象,多个条件的 可以在此方法上优化 原始对象数组: [ { id: 1, name: '数学' },
  • 题目:一个长度为n的整形数组数组中每个元素的取值范围是[0,n-1],判断数组否有重复的数。 程序分析:把每个数放到自己对应序号的位置上,如果其他位置上有和自己对应序号相同的数,那么即为有重复的数值。 C++...
  • 一个长度为N的整形数组,数组中包含每个元素的取值范围是[0,n-1],判断数组是否重复的数,请说一下你的思路并手写代码. 解析: 把每个数放到自己对应序号的位置上,如果其他位置上有和自己对应序号相同的数,则有...
  • jQuery正则判断数组中是否重复

    千次阅读 2017-05-27 15:26:09
    方法定义hasDiff,参数为arr数组function hasDiff(arr) { return /(\x0f[^\x0f]+)\x0f[\s\S]*\1/.test("\x0f" + arr.join("\x0f\x0f") + "\x0f"); }
  • var y = new Array(); for(var i = 0; i  {  if(typeof y[s[i]] != "undefined")  alert("DUP");  else  y[s[i]] = true; }
  • alert("数组中重复元素:" + ary[i]); break; } } } 方法二:  function isRepeat() { var ary = new Array("111", "22", "33", "111"); var nary = ary.sort(); for (var i = 0; i ; i++) { if ...
  • 以下的方法包含了JS方法和JAVA方法 方法1: int[] n = {1,2,3,1,0}; boolean flag = true; //假设不重复 for(int i = 0;i < n.length – 1;i++...
  • 判断数组中是否重复

    2019-09-12 15:15:23
    if((new Set(attr)).size != attr.length){ var set2 = new Set(attr); //这里是去除重复的值 new Set(),用来去重数组。 // let arr = [1, 2, 2, 3]; // let set = new Set(...
  • 判断数组中是否重复的数字(C++)

    千次阅读 2015-12-02 21:55:18
    数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。 请找出数组中任意一个重复的数字。 思路: 这个题目解法很多,这里给出一种解法,充分利用了题目的已知信息。 【每个数的...
  • 1.问题来源 ... 2.代码实现,有以下三种方法: 方法一:通过排序,然后判断相邻的两个元素是否相等 代码: def judgeDuplicated(array): array.sort() count=0 while count&lt;l...
  • function checkData(){ var arr = [{name: 'apple', value: 123}, {name: 'banana', value: 345}, {name: 'apple', value: 222}]; for (var i=0; i<arr.length; i++) { for (var j=i+1; j<...
  • int[] testArr = {5, 5,...// 新建一个int类型数组  System.out.println(Arrays.toString(testArr));  Set&lt;Integer&gt; set = new TreeSet&lt;Integer&gt;();// 新建一个set集合 ...
  • } 降低算法复杂度: 堆给定的数组进行排序,排序后,值相等的所有元素相邻, 只需扫描该有序数组,检查是否存在值相等的相邻元素 void checkDuplicatesSorting(int a[],int n){ Arrays.sort(a); for(int i = 0;i;i+...
  • 一个长度为N的整形数组,数组每个元素的取值范围是[0,N-1],写一个算法判断数组中是否存在重复的数字

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 281,943
精华内容 112,777
关键字:

判断数组中的数据是否重复