多数元素
解法一:HashMap
解法二:摩尔投票算法
import java.util.HashMap;
import java.util.Map;
public class LeetCode_169 {
/**
* 方法一:HashMap
*
* @param nums
* @return
*/
public static int majorityElement(int[] nums) {
Map<Integer, Integer> count = new HashMap<>();
for (int num : nums) {
if (count.get(Integer.valueOf(num)) == null) {
count.put(Integer.valueOf(num), 1);
} else {
count.put(Integer.valueOf(num), count.get(Integer.valueOf(num)) + 1);
}
}
int result = -1, maxCount = -1;
for (Map.Entry<Integer, Integer> integerIntegerEntry : count.entrySet()) {
if (integerIntegerEntry.getValue() > maxCount) {
maxCount = integerIntegerEntry.getValue();
result = integerIntegerEntry.getKey();
}
}
return result;
}
/**
* 方法二:摩尔投票算法
*
* @param nums
* @return
*/
public static int majorityElement2(int[] nums) {
int result = nums[0], count = 1;
for (int i = 1; i < nums.length; i++) {
if (count == 0) {
result = nums[i];
count++;
} else {
if (result == nums[i]) {
count++;
} else {
count--;
}
}
}
return result;
}
public static void main(String[] args) {
int[] nums = new int[]{10, 9, 9, 9, 10};
System.out.println(majorityElement(nums));
System.out.println(majorityElement2(nums));
}
}