LeetCode-169-多数元素

给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。

你可以假设数组是非空的,并且给定的数组总是存在多数元素。

示例 1:

输入:[3,2,3]
输出:3
示例 2:

输入:[2,2,1,1,1,2,2]
输出:2

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/majority-element

解题思路

遍历一遍数组,用两个变量辅助记录,一个记录多数元素的出现次数,一个记录多数元素的索引
因为多数元素出现次数大于数组长度一半,所以我们可以假定第一个元素是目标,然后出现次数设为1
后续遍历时遇到相同元素计数加一,反之减一
当计数为零时将目标元素更换为当前遍历到的元素,继续往后遍历数组重复刚才的做法
这样到最后辅助变量记录的索引一定会指向多数,因为它出现次数比其他所有元素出现次数加起来都多

代码

class Solution {
    public int majorityElement(int[] nums) {
        int count = 0, index = 0;
        for (int i = 0; i < nums.length; i++) {
            if (count == 0) {
                index = i;
            }
            if (nums[i] == nums[index]) {
                count++;
            } else {
                count--;
            }
        }
        return nums[index];
    }
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容