Majority Element II

来源:互联网 发布:域名询价 编辑:程序博客网 时间:2024/06/06 06:47

Given an integer array of size n, find all elements that appear more than ⌊ n/3 ⌋ 

times. The algorithm should run in linear time and in O(1) space.

和上一题类似,可以设置两个变量来记录。

也可以用map记录出现的次数,超过1/3的就加入list。

public List<Integer> majorityElement(int[] nums) {List<Integer> result=new ArrayList<Integer>();if(nums==null||nums.length<=0)return result;HashMap<Integer,Integer> map=new HashMap<Integer, Integer>();for(Integer i:nums){if(map.containsKey(i))map.put(i, map.get(i)+1);elsemap.put(i, 1);}for(Map.Entry<Integer, Integer> entry:map.entrySet()){if(entry.getValue()>nums.length/3)result.add(entry.getKey());}return result;}


0 0
原创粉丝点击