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