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

2021-06-13 03:36:06 字數 730 閱讀 5240

何海濤:《劍指offer:名企面試官精講典型程式設計題》:九度oj

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

輸入:每個測試案例包括2行:

第一行輸入乙個整數n(1<=n<=100000),表示陣列中元素的個數。

第二行輸入n個整數,表示陣列中的每個元素,這n個整數的範圍是[1,1000000000]。

輸出:對應每個測試案例,輸出出現的次數超過陣列長度的一半的數,如果沒有輸出-1。

樣例輸入:

9
1 2 3 2 2 2 5 4 2

樣例輸出:

2

**ac:

#include #include int main()

if( tmp == data[i] )

else

} count = 0;

for( i = 0; i < n; i++ ) // 注意僅僅有上面的count是不行的!

} if( 2 * count > n )

else

}return 0;

}

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

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

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

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

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

1 利用快速排序,排好序中間的值就是出現次數超過一半的數字 注意 判斷陣列是否有效,判斷出現次數頻率是否超過陣列大小的一半 include include include include using namespace std bool g invalid true int partsort int...