首页 > 代码库 > 【leetcode】Majority Element
【leetcode】Majority Element
题目如下
Given an array of size n, find the majority element. The majority element is the element that appears more than ? n/2 ?
times.
You may assume that the array is non-empty and the majority element always exist in the array.
第一中方案如下:比较通用的一种解法,也比较笨
public class Solution { public int majorityElement(int[] num) { HashMap<Integer,Integer> map=new HashMap<>(); for(int a:num){ if(map.get(a)!=null){ int i=map.get(a); map.put(a,i+1); } else{ map.put(a,1); } } List<Map.Entry<Integer,Integer>> list =new ArrayList<>(); list.addAll(map.entrySet()); Collections.sort(list,new Comparator<Map.Entry<Integer,Integer>>(){ public int compare(Map.Entry<Integer,Integer> m1,Map.Entry<Integer,Integer> m2){ return m2.getValue()-m1.getValue(); } }); return list.get(0).getKey(); } }
第二种方案如下:充分利用了题中所给条件
public class Solution { public int majorityElement(int[] num) { HashMap<Integer,Integer> map=new HashMap<>(); for(int a:num){ if(map.get(a)!=null){ int i=map.get(a); map.put(a,i+1); } else{ map.put(a,1); } } for(Map.Entry<Integer,Integer> m:map.entrySet()){ if(m.getValue()>num.length/2){ return m.getKey(); } } return 0; } }第三种解法是我在网上搜的:看完之后,累觉不爱了。。
public class Solution { public int majorityElement(int[] num) { Arrays.sort(num); return num[num.length/2]; } }WTF。。。。
【leetcode】Majority Element
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。