出現次數超過一半的數

2021-08-09 05:48:10 字數 549 閱讀 6957

時間限制: 1000 ms         記憶體限制: 65536 kb

提交數: 315     通過數: 126 

給出乙個含有n(0 < n <= 1000)個整數的陣列,請找出其中出現次數超過一半的數。陣列中的數大於-50且小於50。

第一行包含乙個整數n,表示陣列大小;

第二行包含n個整數,分別是陣列中的每個元素,相鄰兩個元素之間用單個空格隔開。

如果存在這樣的數,輸出這個數;否則輸出no。

3

1 2 2

2
no

#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 到最後還留在陣地上的士兵,有可能是主元素。記錄這個可能的主元素的個數是否大於陣列一半即可確定返回值。...

出現次數超過一半的數字

題目 陣列中有乙個數字出現的次數超過了陣列長度的一半,找出這個數字。乙個陣列中有很多數,現在我們要找出其中那個出現次數超過總數一半的數字,怎麼找呢?大凡當我們碰到某乙個雜亂無序的東西時,我們人的內心本質期望是希望把它梳理成有序的。所以,我們得分兩種情況來討論,無序和有序。如果無序,那麼我們是不是可以...