• LeetCode


    链接

    169. Majority Element

    题意

    给定一个数组,找出其中的“主”元素。定义为:出现次数超过⌊ n/2 ⌋次的元素。
    注意:

    • 数组非空且答案一定存在
    • [1,1,2,2]输出1,[2,2,1,1]输出为2

    思路1

    直接对数组排序,输出nums[nums.length/2]即可。

    思路2

    用一个变量记录当前的主元素(不一定是最终答案),以及count记录当前主元素出现的次数。遍历数组,若元素与主元素相同,count自增,否则自减。当count为0时,说明相异元素已将当前主元素“抵消”,并不是最终答案,此时应该将主元素记录为当前遍历的元素,继续遍历数组直至结束。同时因为题目定义的主元素最少出现次数超过⌊ n/2 ⌋,因此肯定不能被抵消。

    代码

    Java:

    // 思路2代码
    public class Solution {
        public int majorityElement(int[] nums) {
            int count = 0;
            int res = 0;
            for (int i = 0; i < nums.length; i++) {
                if (count == 0) {
                    res = nums[i];
                }
                if (nums[i] == res) {
                    count++;
                } else {
                    count--;
                }
            }
            return res;
        }
    }
    
  • 相关阅读:
    Tree Grafting
    敌兵布阵
    畅通工程(并查集)
    The Suspects(并查集)
    Ubiquitous Religions(friends变形)
    Friends(采用树结构的非线性表编程)
    小球下落(二叉树)
    铁轨
    卡片游戏
    征服C指针
  • 原文地址:https://www.cnblogs.com/zyoung/p/6858944.html
Copyright © 2020-2023  润新知