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

2021-08-22 16:15:29 字數 1258 閱讀 7408

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

思路一:把陣列排好序,出現次數超過一半的數一定是排好序陣列的中位數。然後取中位數,計算它出現的次數是否超過陣列長度的一半。

**:

public int morethanhalfnum_solution(int array) 

} if (count > array.length / 2)

return array[array.length / 2];

return 0;

} public static int partition(int array, int lo, int hi)

array[lo] = array[hi];

while (array[lo] <= key && hi > lo)

array[hi] = array[lo];

} array[hi] = key;

return hi;

} public static void sort(int array, int lo, int hi)

int index = partition(array, lo, hi);

sort(array, lo, index - 1);

sort(array, index + 1, hi);

}

思路二:設定乙個值num儲存數字,乙個count儲存該數字出現的次數,如果陣列下乙個和該數字相同,則+1,不同就-1,直到計數值為零,換成陣列當前值,並將計數值+1,最後將count置為1那個值就是比其他數字出現之和還要多的數,然後我們在計算他的出現的次數是否超過了陣列長度的一半。

public int morethanhalfnum_solution(int array) 

if (num == array[i])

if (num != array[i])

} int tim = 0;

for (int i = 0; i < array.length; i++)

} if (tim > (double) array.length / 2)

return num;

return 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...