陣列中出現次數超過一半的數字(劍指offer)

2021-09-16 13:48:03 字數 525 閱讀 1811

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

解法1:遍歷加入到hashmap中,再遍歷一遍進行判斷即可

解法2:乙個數超過一半則他比其他所有數個數的和都大,那麼我們就可以標記第乙個值,設定乙個times=1,如果與後面的值相同,times+1;不同times-1;times為0時,值換為當前值,times=1;最後在用乙個迴圈判斷times個數》0的值是否為所尋找的值即可;仔細想一想,如果有超過一半的值,那通過這個辦法肯定找的就是該值;如果沒有超過一半的值,通過最後的判斷也可排除

public class solution 

int result = array[0];

int times = 1;

for(int i=1;i(array.length/2)?result: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 ...

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

題目描述 陣列中有乙個數字出現的次數超過陣列長度的一半,請找出這個數字。例如輸入乙個長度為9的陣列。由於數字2在陣列中出現了5次,超過陣列長度的一半,因此輸出2。如果不存在則輸出0。解題思路 將陣列按大小排序,若存在數字出現次數超過陣列長度的一般,則陣列中位數必定為該數字 1 將陣列排序完成後,取a...