zoukankan      html  css  js  c++  java
  • 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;
        }
    }
    
  • 相关阅读:
    123
    p1216
    离线可持久化动态树
    线段树合并
    p2024
    树的dfs序,p1539,p1651,,2018/11/08模拟赛T3
    p1460
    CDQ分治,二维数点与三维数点,p1357与p2026与p2027与p2028与p2029
    自动AC机
    平衡二叉树之splay p1998
  • 原文地址:https://www.cnblogs.com/zyoung/p/6858944.html
Copyright © 2011-2022 走看看