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

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

package java程式設計師面試筆試寶典;

import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.TreeMap;

public class 題8_5_4陣列中重複元素最多的數 {
	public static void main(String[] args) {
		int[] a={1,1,1,2,2,4,4,4,4,5,5,6,6,6,6,6};
		System.out.println(getMostFrequentArray_0(a));
		
	}
	//空間換時間
	public static int getMostFrequentArray_1(int[] a){
		int[] count=new int[a.length];
		int max=0;
		for (int i = 0; i < count.length; i++) {
			count[a[i]]++;
			if(count[a[i]]>max){
				max=count[a[i]];
			}
		}
		return max;
	}
	//map對映表
	public static char getMostFrequentArray_0(int[] a){
		Map<Integer, Integer> map=new TreeMap<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);
			}
		}
		Object[] m=map.entrySet().toArray();
		String str=new String(m[m.length-1]+"");
		char max=str.charAt(2);
		return max;
	}
	public static int getMostFrequentArray(int[] a){
		int curNumber=a[0];
		int count=0;
		int max=0;
		for (int i = 0; i < a.length; i++) {
			if(curNumber==a[i]){
				count++;
			}else {
				if(count>max){
					max=count;
				}
				count=1;
				curNumber=a[i];
			}
			
			if(i==a.length-1&&count>max){
				max=count;
			}
		}
		return max;
	}
}

相關推薦

陣列陣列重複元素多的數

題目描述: 如何找出陣列中重複元素最多的數 思路: 使用Map對映表記錄每一個元素出現的次數,然後判斷次數大小,進而找出重複次數最多的元素。key表示陣列的元素,value表示這個元素在陣列中出現的次數。最後對map進行遍歷。 程式碼: /** * 使用map

如何陣列重複元素多的數

package java程式設計師面試筆試寶典; import java.util.Collections; import java.util.HashMap; import java.util.Ma

陣列重複次數多的元素

思路: 最簡單的方法就是定義一個數組b把相同的元素放到對應位置,如果陣列a的元素等於這個下標,那麼這個下標對應的值就加1,最後找出這個陣列中最大值返回下標,這個方法浪費很大空間,不推薦。 新的思路:採用map,定義一個map,初始值預設為0,迴圈遍歷陣列a,

陣列重複次數多的數

方法一:如果相同的數是連續出現 從第一個數開始,與它後面的數比較,如果相同,計算+1,如果不等,計數置為1.同時保持此時的計數次數和此時的元素; #include<stdio.h> in

如何陣列重複次數多的數

eg 陣列{1,1,2,2,3,4,4,4,4,5,5,5,6,6} 元素1出現的次數為2, 元素2出現的次數為2,元素3出現的次數為1,元素4出現的次數為4,元素5出現的次數為3,元素6出現的次數

問題8:如何陣列重複次數多的數?

一種方法是以空間換時間,可以定義一個數組 int count[MAX],並將其陣列元素都初始化為0,然後執行for(int i=0; i<100; i++)   count[A[i]]++操作,在count中找最大的數,即為重複次數最多的數。       程式碼如下:

陣列出現次數多的那個數——主元素問題

 方法一:以空間換時間,可以定義一個計數陣列int count[100],用來對陣列中數字出現的次數進行計數(只能針對陣列中數字的範圍1~1000),count陣列中最大的元素對應的下標,即為出現次數最多的那個數。程式碼如下: #include <iostream&g

劍指Offer-3 陣列重複的數字

題目: 給定一個長度為 n 的整數陣列 nums,陣列中所有的數字都在 0∼n−1 的範圍內。陣列中某些數字是重複的,但不知道有幾個數字重複了,也不知道每個數字重複了幾次。請找出陣列中任意一個重複的數字。 注意:如果某些數字不在 0∼n−1 的範圍內,或陣列中不包含重複數字,則返回 -1

Day14陣列重複的資料

problem describe: 給定一個整數陣列 a,其中1 ≤ a[i] ≤ n (n為陣列長度), 其中有些元素出現兩次而其他元素出現一次。 找到所有出現兩次的元素。 你可以不用到任何額外空間並在O(n)時間複雜度內解決這個問題嗎? solution:

劍指offer 1. 陣列重複的數字

給定一個長度為 n 的整數陣列 nums,陣列中所有的數字都在 0∼n−1 的範圍內。 陣列中某些數字是重複的,但不知道有幾個數字重複了,也不知道每個數字重複了幾次。 請找出陣列中任意一個重複的數字。 注意:如果某些數字不在 0∼n−1 的範圍內,或陣列中不包含重複數字,則返回 -1;

燒腦資料庫演算法題 Postgresql 陣列重複的手機號

備註:此演算法也適用於人脈搜尋(比如共同的好友等) so 思想很重要,工具不重要,思想錯了幹得再多也是白乾.有了思想你也可以無限擴充套件 搜尋人脈關係比查重複的手機號快的多,重複的手機號畢竟要全表比較,人脈搜尋關係只需要掃描相關的資料即可,估計應該可以在10

陣列不同元素並統計相同元素的個數

public void getDifference(int[] arr) { Dictionary<int, int> dic= new Dictionary<int, int>();

python-2.陣列重複的數字

題目描述: 在一個長度為n的數組裡的所有數字都在0~n-1的範圍內,陣列中某些數字是重複的,但不知道有幾個數字重複了,也不知道每個數字重複了幾次。請找出數字中任意一個重複的數字。例如,如果輸入長度為

陣列出現次數多的數字

#include <stdio.h> #include <stdlib.h> /* run this program using the console pauser or add your own getch, system("pause") or

整型陣列重複次數多的元素

#include <iostream> #include <vector> #include <algorithm> #include <map> using namespace std; struct number {

Problem B: 零起點學演算法81——陣列元素的位置(下標值

#include<stdio.h> int main(void) { int n,a[10],i,max; while(scanf("%d",&n)!=EOF) { for(i=0;i<n;i++) scanf("%d",

陣列唯一的重複元素

題目:陣列 arr[N],1 至 N 這 N - 1 個數存放在 arr[N] 中,其中某個數重複一次,寫一個函式,找出重複的數字。要求每個陣列元素只能訪問一次,不用輔助儲存空間。 分析:由於題目要求每個陣列元素只能訪問一次,不用輔助儲存空間,可以從原理上入手

Leetcode421. 陣列兩個元素異或的大值

Leetcode421. Maximum XOR of Two Numbers in an Array 題目 Given a non-empty array of numbers, a0, a1, a2, … , an-1, where 0 ≤ ai

資料結構——陣列(5)陣列唯一重複的數(元素範圍1~1000)

這個題目本身就有一定侷限性。比如,對於陣列a[10001],其中,1000個數就是1~1000的每個數,可以任意排列,然後再多一個重複的數。題目就是怎麼求出這個特殊的重複的數。 這一類問題的解決思路主要有以下幾種: 方法一:先求和,再相減。即陣列元素值求和,

陣列元素的位置(下標值)

Description 找出陣列中最大的元素的下標。 Input 多組測試,每組先輸入一個不大於10的整數n 然後是n個整數 Output 輸出這n個整數中最大的元素及下標值 Sample Input 4 1 4 5 6 Sample Output 6 3 #i