精华内容
下载资源
问答
  • 使用Map映射表记录每一个元素出现的次数,然后判断次数大小,进而找出重复次数最多的元素。key表示数组的元素,value表示这个元素在数组中出现的次数。最后对map进行遍历。 代码: /** * 使用map(不允许重复的...

    题目描述:

    如何找出数组中重复元素最多的数

    思路:

    使用Map映射表记录每一个元素出现的次数,然后判断次数大小,进而找出重复次数最多的元素。key表示数组的元素,value表示这个元素在数组中出现的次数。最后对map进行遍历。

    代码:

    /** 
    	 * 使用map(不允许重复的),key是a中元素的值,value是元素出现的次数
    	 * @param a
    	 * @return
    	 */
    	private int findMostFrequentInArray(int[] a) {
    		Map<Integer, Integer> map = new HashMap<Integer, Integer>();
    		for(int i=0; i<a.length; i++ ){
    			if(map.containsKey(a[i])){
    				map.put(a[i], map.get(a[i])+1);
    			}else{
    				map.put(a[i], 1);
    			}
    		}
    		int index=0;//数组中重复元素最多的数
    		int val = 0;//最多的次数
    		Iterator<Entry<Integer, Integer>> iterator = map.entrySet().iterator();
    		while(iterator.hasNext()){
    			Entry<Integer, Integer> next = iterator.next();
    			int key = next.getKey();
    			int value = next.getValue();
    			if(value > val){
    				index = key;
    				val = value;
    			}
    		}
    		return index;
    	}

    测试代码:

    @Test
    	public void test1(){
    		int[] a = {1,1,1,1,1,2,2,4,4,4,4,5,5,6,6,6};
    		System.out.println(findMostFrequentInArray(a));
    	}

     

    展开全文
  •  再判断次数大小,进而找出重复次数最多的数  Map取数据常用方法:  1、先拿到当前map所有的key 根据key迭代出所有的value Set&lt;Integer&gt; set = map.keySet(); Iterator&lt;Integer&gt...

    算法思路:

         使用Map映射表存放每一个数据及出现的次数
         再判断次数大小,进而找出重复次数最多的数

         Map取数据常用方法:

        1、先拿到当前map所有的key 根据key迭代出所有的value

    Set<Integer> set = map.keySet();  
    Iterator<Integer> it = set.iterator();  
    while(it.hasNext()){  
        Integer key = it.next();  
        System.out.println("key:" + key + ", value:" + map.get(key));  
    }  

         2、  Map.Entry是Map的一个工具类,提供了从map中读取一行数据的读取,一次可以迭代出map集合中的键值对

    Iterator<Map.Entry<Integer, String>> it = map.entrySet().iterator();  
    while (it.hasNext()) {  
        Map.Entry<Integer, String> entry = it.next();  
        System.out.println("key:"+entry.getKey() + ", value:"+entry.getValue());  
    }  

    实现代码:

    package JBArray;
    
    import java.util.HashMap;
    import java.util.Iterator;
    import java.util.Map;
    import java.util.Map.Entry;
    
    /**
     * 找出数组中重复元素出现最多的数
     * @author Dan
     *
     */
    public class findMostFrequenInArray {
    	
    	/**
    	 * 思路描述:
    	 * 使用Map映射表存放每一个数据及出现的次数
    	 * 再判断次数大小,进而找出重复次数最多的数
    	 * 
    	 * @param a
    	 * @return
    	 */
    	public static int findMostFrequenInArray(int[] a){
    		int result = 0;
    		int size = a.length;
    		if(size == 0){
    			return Integer.MAX_VALUE;
    		}
    		//记录每个元素出现的次数
    		Map<Integer,Integer> m = new HashMap<Integer, Integer>();
    		for (int i = 0; i < size; i++) {
    			if (m.containsKey(a[i])) {
    				m.put(a[i], m.get(a[i])+1);//已有该元素,直接累加
    			}
    			else{
    				m.put(a[i], 1);//插入该元素,次数为1
    			}
    		}
    		//找出出现次数最多的元素
    		int most = 0;
    		Iterator iter = m.entrySet().iterator();
    		while (iter.hasNext()) {
    			Map.Entry  entry = (Map.Entry) iter.next();
    			int key = (int) entry.getKey();
    			int val = (int) entry.getValue();
    			if (val>most) {
    				result = key;
    				most = val;
    			}
    		}
    		return result;
    	}
    	
    	public static void main(String[] args) {
    		int[] arr = {1,5,3,3,4,4,4};
    		int maxFreNum = findMostFrequenInArray(arr);
    		System.out.println(maxFreNum);
    	}
    	
    
    }
    

     

    展开全文
  • 在堆区申请一个超级大的一数组空间,用它的下标存原数组的数。。出现一次对应下标的值+1…觉得这样方便的不然就是不停的遍历…暂时没想到其他办法…就投机一下。 int Find(int *pStr,int len,int *pa) { int i; ...

    在堆区申请一个超级大的一维数组空间,用它的下标存原数组的数。。出现一次对应下标的值+1…觉得这样方便的不然就是不停的遍历…暂时没想到其他办法…就投机一下。

    int Find(int *pStr,int len,int *pa)
    {
    	int i;
    	int *p1 = pStr;
    	for(i = 0;i<len;i++)
    	{
    		//printf("=%d=",p1[i]);
    		int index = p1[i];
    		pa[index]+=1;
    		//printf("pa[%d] = %d  ",index,pa[index]);
    	}
    	int max = pa[0];
    	int max1 = 0;
    	for(i =0;i<10000000;i++)
    	{
    		
    		if(pa[i]>max)
    		{
    			max = pa[i];
    			max1 = i;
    		}
    	}
    	return max1;
    	
    }
    
    int main(int argc, char const *argv[])
    {
    	int *pa = (int *)malloc(sizeof(int)/sizeof(char)*10000000);
    	
    	
    	if(NULL == pa)
    	{
    		printf("error\n");
    	}
    	int s[]={1,2,5,3,32,44,3,4,3,9,10,9,9,9,9,99,9};
    	int length  = sizeof(s)/sizeof(int);
    	int max = Find(s,length,pa);
    	printf("max = %d\n",max);
    	free(pa);
    	pa = NULL;
    	if(NULL == pa)
    		printf("success\n");
    	return 0;
    }
    
    展开全文
  • 方法一:采用一个数字来储存每个数字出现次数 let a = [1,2,3,3,2,2,3] let countArr = []; //定义个数组来储存每个数字出现次数,数组下标是对应数字 for(let j=0; j<a.length; j++){ // 判断是否第一...

    方法一:采用一个数字来储存每个数字出现的次数

    let a = [1,2,3,3,2,2,3]
    
    let countArr = []; //定义个数组来储存每个数字出现的次数,数组下标是对应的数字
    
    for(let j=0; j<a.length; j++){
      // 判断是否第一次出现
      if(j === a.indexOf(a[j])){
        countArr[a[j]] = 1
      }else{
        countArr[a[j]] = countArr[a[j]] + 1
      }
    }
    
    let maxNum = 0 //储存数字的最多次数
    
    for(let i=0; i<countArr.length; i++){
      if(countArr[i] !== undefined && countArr[i] > maxNum){
        maxNum = countArr[i]
      }
    }
    
    for(let j=0; j<countArr.length; j++){
      if(maxNum === countArr[j]){
        console.log('出现最多的数字为:',j);
      }
    }
    

    方法二:采用一个对象来存储,键表示该数字,值表示给数字出现次数

    let a = [1,2,3,3,2,2,3,12,33,12,12,33]
    let obj = {} //采用键值对来存储,键表示该数字,值表示给数字出现次数
    let maxNum = 0
    a.forEach((item,index) => {
      if(a.indexOf(item) == index){
        obj[item] = 1
      }else{
        obj[item] = obj[item] + 1
      }
    })
    //找出谁是最大值
    for(let i in obj){
      if(obj[i] > maxNum){
        maxNum = obj[i]
      }
    }
    //根据最大值输出对应的数字
    for(let j in obj){
      if(obj[j] === maxNum){
        console.log('出现次数最多的数字为',j,' ,次数为',obj[j]);
      }
    }
    
    
    展开全文
  • var arr = [1,1,1,2,2,2,2,2,2,2,3,3,3,4,4,5,6,7,7,8];... }) for(let r in obj) { if(obj[r]>maxNum){ maxNum = obj[r] } } // console.log(`最多重复的数${maxName},重复次数为:${maxNum}`)
  • 找出一维数组中重复次数最多的元素以及重复的次数 关于数组的算法问题层出不穷,无论是一维数组还是二维数组。此类问题中,简单的、复杂的都有,而且变化很多。 下面从一个一维数组的问题开始。 问题描述:找出一...
  • 算法思想:目标数组array[length],是一个有序数组,比如int array[]={1,1,2,2,4,4,4,4,4,5,5,6,10};总共有13个元素,其中数字最多的数是4,总计5次。 因此,额外定义一个数组count[length],并将该数组初始化为0...
  • rt:找出Map中的最大Value及其对应的Key,常用于找出一个数组中重复次数最多的字符import java.util.*; public class KeyOnMaxValue{ public static void main(String[] args) { Map mp = new HashMap(); int ...
  • 给定一个int数组,里面存在重复的数值,如何找到重复次数最多的数值呢? 这是在某社区上有人提出的问题,我想到的解决方法是分组。 1、先对数组中的所有元素进行分组,那么,重复的数值肯定会被放到一组中; 2、将...
  • 如何找出数组中重复次数最多的

    千次阅读 2016-05-12 22:00:03
    数组{1,1,2,2,4,4,4,4,5,5,6,6,6},问题是找出出现...每个关键字只能在map出现一次,第二个称为该关键字的值,来记录每一个元素出现的次数,然后判断次数的大小,进而找出重复次数最多的元素。 程序实例如下,环境是V
  • 找出一个数组中重复次数最多的

    千次阅读 2016-07-19 14:09:00
    使用map映色表,通过引入map表来记录每一个元素出现次数。 bool find_most_frequency_number(int *arr, int size, int &val) { if (a == NULL || size ) return false; map m; for (int i = 0; i ; i++) { ...
  • 二、一组数组中找出重复次数最多的元素 1、python返回一个列表中出现次数最多的元素 思路:for循环遍历字符串中的元素,将第一个元素置为重复最多的元素,之后分别比较每一个元素的count,循环比较,得出count最大的...
  • 问题描述:对于数组{1,5,4,3,4,4,5,4,5,5,6,6,6,6,6},元素1出现的次数为1次,元素3出现的次数...通过Map来记录每一个元素的出现次数,然后判断次数大小,进而找出重复次数最多的元素。 package com.haobi; impo...
  • 找出数组中重复次数最多的元素

    千次阅读 2017-01-07 18:09:24
    最简单方法就是定义一个数组b把相同元素放到对应位置,如果数组a元素等于这个下标,那么这个下标对应值就加1,最后找出这个数组中最大值返回下标,这个方法浪费很大空间,不推荐。新思路:采用map,定义...
  • 给定一个int数组,里面存在重复的数值,如何找到重复次数最多的数值呢? 这是在某社区上有人提出的问题,我想到的解决方法是分组。 1、先对数组中的所有元素进行分组,那么,重复的数值肯定会被放到一组中; 2、将...
  • 数组中重复次数最多的

    千次阅读 2016-06-23 22:24:51
    题目:如何找出数组中重复次数最多的数。 方法一:以空间换时间,即hash法。可以定义一个数组 int count[MAX],并将其数组元素都初始化为0;然后对原数组array[ ]进行遍历,并执行 count[ array[ i ] ]++ 操作;...
  • 找出数组中重复次数最多的

    千次阅读 2013-09-01 17:19:52
    从第一个数开始,与它后面的数比较,如果相同,计算+1,如果不等,计数置为1.同时保持此时的计数次数和此时的元素; #include int Search(int a[],int len) { int max=0;//保持到目前为此出现次数最多的那个数 ...
  • 得练习怎么用java实现哇,只知道思想是不行滴,知道思想能用C/C++实现也是不行,因为要应聘职位是java哇,不会用...这个不用先排序,一个直观方法是用Hash(用数组实现) 1 int MAX=100; 2 int num(int[...
  • import java.util....//找出一个int类型数组中的最大数、最小数、重复次数最多的任意一个数 public class MaoPao { int tmp = 0; void maxArr(int[]a){ for (int i = 0; i < a.length; i++) { if (tm...
  • 一种方法是以空间换时间,可以定义一个数组 int count[MAX],并将其...//该函数作用是获得数组中最大数,并将该数首次出现索引赋值给num保存 int getMaxNum(int* arr, int len, int &num) { int index = arr
  • 使用map映射表,通过引入map表,其中的一个为关键字,每个关键字在map只能出现一次,第二个为该关键字对应的值来记录每一个元素出现的次数,判断次数的大小,进而找出重复次数最多的元素。 bool ...
  • /*找出一个数组里面出现最多的一个和这个数组出现的位置*/ var array=["a","x","b","d","m","a","k","m","p","j","a"];//原数组数; var array1=[];//定义一个array1数组,用于复制array数组; var array2=[];//定义一...
  • 题目:面试题3在一个长度为n数组里所有数组都在0~n-1范围内。数组中某些数字是重复,但不知道有几个数字重复了,也不知道每个数字重复了多少次。...从排序的数组中找出重复的数字是一件很容易...

空空如也

空空如也

1 2 3 4 5 ... 7
收藏数 137
精华内容 54
关键字:

数组中找出重复最多的一个