48 陣列中出現次數超過一半的數字
1 題目描述
陣列中有一個數字出現的次數超過陣列長度的一半,請找出這個數字。
你可以假設陣列是非空的,並且給定的陣列總是存在多數元素。
示例 1:
輸入: [1, 2, 3, 2, 2, 2, 5, 4, 2]
輸出: 2
限制:
1 <= 陣列長度 <= 50000
2 解題(Java)
摩爾投票法: 核心理念為 票數正負抵消 。
class Solution {
public int majorityElement(int[] nums) {
int x = 0, votes = 0;
for(int num : nums){
if(votes == 0) x = num;
votes += num == x ? 1 : -1;
}
return x;
}
}
3 複雜性分析
- 時間複雜度 O(N): N 為陣列 nums 長度。
- 空間複雜度 O(1): votes 變數使用常數大小的額外空間。
來源:力扣(LeetCode)
連結:https://leetcode-cn.com/problems/shu-zu-zhong-chu-xian-ci-shu-chao-guo-yi-ban-de-shu-zi-lcof
相關文章
- 陣列中出現次數超過一半的數字陣列
- JZ-028-陣列中出現次數超過一半的數字陣列
- 每日一練(20):陣列中出現次數超過一半的數字陣列
- [劍指offer題解][Java]陣列中出現次數超過一半的數字Java陣列
- Leetcode 劍指 Offer 39. 陣列中出現次數超過一半的數字LeetCode陣列
- 力扣 - 劍指 Offer 39. 陣列中出現次數超過一半的數字力扣陣列
- 查詢陣列中出現次數大於陣列長度一半的數字陣列
- 找到陣列中出現特定次數數字的問題陣列
- JZ-037-數字在排序陣列中出現的次數排序陣列
- 找出陣列中元素出現次數超過陣列長度一半的元素陣列
- Matlab tabulate統計數字出現的次數,如果陣列中出現0Matlab陣列
- 劍指Offer-39-數字在排序陣列中出現的次數排序陣列
- 劍指OFFER-數字在升序陣列中出現的次數(Java)陣列Java
- 劍指offer之列印超過陣列一半的數字陣列
- js找出陣列中出現最多的元素和次數JS陣列
- 統計陣列中各數字(元素)出現的次數陣列
- 找出陣列中第 k 大的數字及其出現次數陣列
- Matlab 統計陣列中各數字(元素)出現的次數Matlab陣列
- 給定一個大小為 n 的陣列,找到其中的眾數。眾數是指在陣列中出現次數大於 ⌊ n/2 ⌋ 的元素。陣列
- 找出陣列中只出現一次的數字陣列
- 劍指 Offer 56 - I. 陣列中數字出現的次數陣列
- 陣列中每個陣列元素出現的次數陣列
- 輸出字串中出現次數最多的字元和次數字串字元
- JZ-040-陣列中只出現一次的數字陣列
- 在其它數都出現k次的陣列中找到只出現一次的數陣列
- 統計檔案中出現的單詞次數
- 陣列中重複的數字陣列
- 統計陣列元素中每個元素出現的次數陣列
- js常見演算法(一):陣列去重,打亂陣列,統計陣列各個元素出現的次數, 字串各個字元的出現次數,獲取地址連結的各個引數JS演算法陣列字串字元
- 判斷字串中出現最多的字元,並統計次數字串字元
- 面試:Java 實現查詢旋轉陣列的最小數字面試Java陣列
- 3229. 使陣列等於目標陣列所需的最少操作次數陣列
- 劍指offer:旋轉陣列的最小數字陣列
- 448. 找到所有陣列中消失的數字陣列
- 劍指offer 旋轉陣列的最小數字陣列
- JZ-050-陣列中重複的數字陣列
- js實現把textarea通過換行或者回車把多行數字分割成陣列,並且去掉陣列中空的值。JS陣列
- python實現給定一個數和陣列,求陣列中兩數之和為給定的數Python陣列