出現次數超過一半的數

/*

出現次數超過一半的數

? ? 數組中有一個數出現的次數超過了數組長度的一半,找出這個數。

*/

/*

思路:

? ? 定義兩個變量,一個用來保存數組中遍歷的某個數,另一個用來表示

數組中當前數出現的次數,其中當前數出現的次數初始化為1,當遍歷

到數組中下一個數的時候:如果下一個數與保存數組中遍歷的某個數

相同時,則當前數出現的次數加1,否則減1。每當當前數出現的次數變

為0時,用來保存數組中的遍歷的某個數就要保存下一個數,并把當前

出現的次數重新設置為1,直到遍歷完整個數組為止。

*/

#include<iostream>

using namespace std;

int main()

{

int array[100],n,i,ntimes=1,candidate;

cin>>n;

for(i=0;i<n;i++)

cin>>array[i];

candidate=array[0];

for(i=1;i<n;i++)

{

if(ntimes==0)

{

candidate=array[i];

ntimes=1;

}

else

{

if(candidate==array[i])

ntimes++;

else

ntimes--;

}

}

cout<<candidate<<endl;

return 0;

}?

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 背景 一年多以前我在知乎上答了有關LeetCode的問題, 分享了一些自己做題目的經驗。 張土汪:刷leetcod...
    土汪閱讀 12,769評論 0 33
  • 信不信由你
    七十二般變化閱讀 220評論 0 0
  • 突兀的山,彎曲的水,置于小小盆景里便有了大意境。把這盆景放在案頭,既與山水為鄰,也與喧囂別離。方寸之間,亦...
    冰夫閱讀 155評論 0 0
  • 晚上八點三十三分 雪雪上小學以來,說實話我是不開心的,很緊張甚至焦慮。做什么也不太能踏下心,甚至陪兩個小家伙玩的時...
    瑞雪喜雨閱讀 123評論 0 0