題目描述:數組
分析:由題目可知這個數組不爲空且該主元素必定存在,我選用HashMap來存儲,HashMap的存儲結構是」鍵—值對「,」鍵「用來存儲數組元素,」值「用來存儲這個元素出現的次數,而後循環遍歷這個HashMap,當發現有一個」鍵「對應的」值「大於數組元素個數的二分之一時,將這個」鍵「返回。spa
代碼:code
1 public class Solution { 2 /* 3 * @param nums: a list of integers 4 * @return: find a majority number 5 */ 6 public int majorityNumber(List<Integer> nums) { 7 // write your code here 8 HashMap<Integer,Integer> h = new HashMap<Integer,Integer>(); 9 10 int major = 0; 11 12 for(int i=0; i<nums.size(); i++) { 13 //若是該元素已存在HashMap之中 14 if(h.containsKey(nums.get(i))) { 15 //將元素個數取出,並加1,再存回去 16 int num = h.get(nums.get(i)); 17 num += 1; 18 h.put(nums.get(i), num); 19 }else { 20 h.put(nums.get(i), 1); 21 } 22 } 23 24 int mid = nums.size()/2; 25 26 for(int i=0; i<nums.size(); i++) { 27 if(h.get(nums.get(i)) > mid) { 28 major = nums.get(i); 29 break; 30 } 31 } 32 return major; 33 } 34 }