https://leetcode.cn/problems/majority-element/description/?envType=study-plan-v2&envId=top-interview-150

 

go

package leetcode150

import "testing"

func Test(t *testing.T) {
    nums := []int{6, 5, 5}
    println(majorityElement(nums))
}

func majorityElement(nums []int) int {
    ans := 0
    count := 0
    for _, num := range nums {
        if count == 0 {
            ans = num
            count = 1
            continue
        }

        if num == ans {
            count++
        } else {
            count--
        }
    }
    return ans
}

func majorityElement2(nums []int) int {
    numMap := make(map[int]int)
    for _, num := range nums {
        numMap[num]++
    }
    for k, v := range numMap {
        if v > len(nums)/2 {
            return k
        }
    }
    return 0
}

java

package leetcode150;

public class a5_169_majorityElement {


    public int majorityElement(int[] nums) {
        int major = 0;
        int count = 0;
        for (int num : nums) {
            if (count == 0) {
                major = num;
                count = 1;
            } else if (num == major) {
                count++;
            } else {
                count--;
            }
        }
        return major;
    }
}