時間限制: 1000 ms 記憶體限制: 65536 kb
提交數: 315 通過數: 126
給出乙個含有n(0 < n <= 1000)個整數的陣列,請找出其中出現次數超過一半的數。陣列中的數大於-50且小於50。
第一行包含乙個整數n,表示陣列大小;
第二行包含n個整數,分別是陣列中的每個元素,相鄰兩個元素之間用單個空格隔開。
如果存在這樣的數,輸出這個數;否則輸出no。
31 2 2
2no
#include
#include
#include
using namespace std;
int main()
for(i=1;i
n/2)//判斷count是否大於n/2,如果大於,則輸出a[i] { cout<
dev-c++執行成功,提交通過
找出陣列出現次數超過一半的數
例如 陣列中1出現了5次超過長度9的一半。因此輸出1 注 這裡沒有考慮出現次數最多的數字是0的情況,關鍵在於方法 這裡給出兩種常用方法 這種演算法優點在於理解起來比較容易,如果乙個數出現次數超過長度的一半,那將陣列排序之後位於陣列中間位置的數一定就是要找到的數。注 需要檢測一下中間的數是否是超過一半...
陣列中出現次數超過一半的數
採用陣地攻守的思想 第乙個數字作為第乙個士兵,守陣地 count 1 遇到count為0的情況,又以新的i值作為守陣地的士兵,遇到相同元素,count 遇到不相同元素,即為敵人,同歸於盡,count 到最後還留在陣地上的士兵,有可能是主元素。記錄這個可能的主元素的個數是否大於陣列一半即可確定返回值。...
出現次數超過一半的數字
題目 陣列中有乙個數字出現的次數超過了陣列長度的一半,找出這個數字。乙個陣列中有很多數,現在我們要找出其中那個出現次數超過總數一半的數字,怎麼找呢?大凡當我們碰到某乙個雜亂無序的東西時,我們人的內心本質期望是希望把它梳理成有序的。所以,我們得分兩種情況來討論,無序和有序。如果無序,那麼我們是不是可以...