• Lc169_多数元素


    package com.example.demo;
    
    /**
     * 169. 多数元素
     * 给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。
     * <p>
     * 你可以假设数组是非空的,并且给定的数组总是存在多数元素。
     * <p>
     * <p>
     * <p>
     * 示例 1:
     * <p>
     * 输入: [3,2,3]
     * 输出: 3
     * 示例 2:
     * <p>
     * 输入: [2,2,1,1,1,2,2]
     * 输出: 2
     */
    public class Lc169 {
        /**
         * 考点
         * 摩尔投票法:
         * <p>
         * 核心就是对拼消耗。
         * <p>
         * 玩一个诸侯争霸的游戏,假设你方人口超过总人口一半以上,并且能保证每个人口出去干仗都能一对一同归于尽。最后还有人活下来的国家就是胜利。
         * <p>
         * 那就大混战呗,最差所有人都联合起来对付你(对应你每次选择作为计数器的数都是众数),或者其他国家也会相互攻击(会选择其他数作为计数器的数),但是只要你们不要内斗,最后肯定你赢。
         * <p>
         * 最后能剩下的必定是自己人。
         *
         * 注意:众数时占比超过一半的
         * @param nums
         * @return
         */
        public static int majorityElement(int[] nums) {
            int res = 0, cnt = 0;
            for (int i = 0; i < nums.length; i++) {
                if (cnt == 0) {
                    res = nums[i];
                    cnt++;
                } else {
                    int a = res == nums[i] ? cnt++ : cnt--;
                }
            }
            return res;
        }
    
    
    }
    
    
  • 相关阅读:
    [leetCode]剑指 Offer 62. 圆圈中最后剩下的数字
    [leetCode]剑指 Offer 61. 扑克牌中的顺子
    [leetCode]剑指 Offer 60. n个骰子的点数
    POJ
    POJ
    POJ
    codeforces
    LightOJ
    CodeForces
    CodeForces
  • 原文地址:https://www.cnblogs.com/xiaoshahai/p/12963628.html
Copyright © 2020-2023  润新知