0
点赞
收藏
分享

微信扫一扫

LeetCode-169-多数元素

一叶轻舟okok 2021-09-28 阅读 37
LeetCode

多数元素

解法一: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));
    }
}
举报

相关推荐

0 条评论