1. 程式人生 > >陣列:找出陣列中重複元素最多的數

陣列:找出陣列中重複元素最多的數

題目描述:

如何找出陣列中重複元素最多的數

思路:

使用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));
	}