刷題之路 陣列中出現次數超過一半的數字

2021-07-15 09:40:15 字數 476 閱讀 1604

陣列中有乙個數字出現的次數超過陣列長度的一半,請找出這個數字。例如輸入乙個長度為9的陣列。由於數字2在陣列中出現了5次,超過陣列長度的一半,因此輸出2。如果不存在則輸出0

可以利用累計投票來實現時間複雜度為n的演算法,具體過程如下:

設定flag為第乙個元素,初始化count=1;將後乙個元素與flag比較,並做如下判斷:

1、若下乙個元素與flag相同,count+1;

2、若下乙個元素與flag不同,count-1;

3、若count=0.則更新flag為當前元素,並且重置count=1;

這樣做,遍歷完成後,flag有兩種情況:

1、若存在數字超過一半,則flag必然是這個數字,他不會被最終更新掉

2、若不存在這個數字,則flag為最後乙個元素的值

所以需要下一步判斷,找出flag出現的次數,如果次數超過一半,則返回flag,否則返回0。**如下

class solution };

陣列中出現超過一半的次數

題目 陣列中有乙個數字出現的次數超過陣列長度的一半,請找出這個數字。例如輸入乙個長度為9的陣列。由於數字2在陣列中出現了5次,超過陣列長度的一半,因此輸出2。如果不存在則輸出0.思路一 把陣列排好序,出現次數超過一半的數一定是排好序陣列的中位數。然後取中位數,計算它出現的次數是否超過陣列長度的一半。...

陣列中出現次數超過一半的數字

何海濤 劍指offer 名企面試官精講典型程式設計題 九度oj 題目描述 陣列中有乙個數字出現的次數超過陣列長度的一半,請找出這個數字。例如輸入乙個長度為9的陣列。由於數字2在陣列中出現了5次,超過陣列長度的一半,因此輸出2。輸入 每個測試案例包括2行 第一行輸入乙個整數n 1 n 100000 表...

陣列中出現次數超過一半的數字

陣列中出現次數超過一半的數字 陣列中有乙個數字出現的次數超過陣列長度的一半,請找出這個數字。例如輸入乙個長度為9的陣列。由於數字2在陣列中出現了5次,超過陣列長度的一半,因此輸出2。如果不存在則輸出0。class solution count 0 for auto i numbers if i k ...