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; } }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章