[LeetCode]Majority Element

来源:互联网 发布:小野妹子学吐槽 知乎 编辑:程序博客网 时间:2024/06/05 18:53

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.

思路:
1.Map计数,时间复杂度O(3n)
2.排序后取中值,时间复杂度依赖于排序算法,平均最快O(n*logn) –>时间效率不好,排除
3.count计数,时间复杂度O(n)

/* 法一:时间复杂度O(n)+空间复杂度O(n) */import java.util.Map;import java.util.HashMap;public class Solution {    public int majorityElement(int[] nums) {        Map<Integer, Integer> map = new HashMap<>();        for (int i = 0;i < nums.length;i++) {            map.put(nums[i], 0);        }        for (int i = 0;i < nums.length;i++) {            map.put(nums[i], map.get(nums[i]) + 1);        }        int majority = nums[0];        for (int i = 0;i < nums.length;i++) {            if (map.get(majority) < map.get(nums[i])) {                majority = nums[i];            }        }        return majority;    }}/* 优化目前最优解 *//* 法一:时间复杂度O(n)+空间复杂度O(1) */import java.util.Map;import java.util.HashMap;public class Solution {    public int majorityElement(int[] nums) {        int majority = nums[0];        int count = 1;        for (int i = 1;i < nums.length;i++) {            if (count == 0) {                majority = nums[i];                count = 1;            }            else if (nums[i] == majority) count++;            else count--;        }        return majority;    }}
原创粉丝点击