使用HashMap:HashMap找出次数>n/2的元素
class Solution {
public int majorityElement(int[] nums) {
int len = 0;
Map<Integer, Integer> seen = new HashMap<Integer, Integer>();
for(int num: nums)
{
if(seen.containsKey(num))
{
/*
Integer jia = seen.get(num) + 1;
//System.out.println("num:"+num+",len:"+ jia);
seen.replace(num,jia);
*/
seen.put(num, counts.get(num) + 1);
}
else{
len = 1;
//System.out.println("新加入元素num:"+num+",len:"+ len);
seen.put(num,len);
}
}
Set<Integer> keyset = seen.keySet();
Iterator<Integer> it = keyset.iterator();
int curmax = 0;
while(it.hasNext())
{
Integer key = it.next();
Integer value = seen.get(key);
System.out.println("key:"+key+",value:"+value);
if(value > nums.length/2)
{
return key;
}
}
return 0;
}
}
使用位运算
先排序,如果是多数元素n/2,则下标为n/2的元素一定是多数元素
class Solution {
public int majorityElement(int[] nums) {
Arrays.sort(nums);
int n = nums.length;
return (nums[n/2]);
}
}