LintCode之主元素
Posted echo
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LintCode之主元素相关的知识,希望对你有一定的参考价值。
题目描述:
分析:由题目可知这个数组不为空且该主元素一定存在,我选用HashMap来存储,HashMap的存储结构是”键—值对“,”键“用来存储数组元素,”值“用来存储这个元素出现的次数,然后循环遍历这个HashMap,当发现有一个”键“对应的”值“大于数组元素个数的二分之一时,将这个”键“返回。
代码:
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 }
以上是关于LintCode之主元素的主要内容,如果未能解决你的问题,请参考以下文章