LeetCode 169 – 多数元素

题目描述

给定一个大小为 n 的数组 nums ,返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。
你可以假设数组是非空的,并且给定的数组总是存在多数元素。

题目分析

遍历数组时,对历史上的假定众数计数 count,相同+1 相异-1,count 变为0则重新假定众数。
由于目标数字出现次数一定大于 n/2,所以最终的假定值就是答案。
时间复杂度 O(n),空间复杂度 O(1)

Java

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

Kotlin

fun majorityElement(nums: IntArray): Int {
    var ans = 0
    var count = 0
    for (num in nums) {
        if (count == 0) {
            ans = num
        }
        count += if (num == ans) 1 else -1
    }
    return ans
}

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

开始在上面输入您的搜索词,然后按回车进行搜索。按ESC取消。

返回顶部