尋找發貼水王,水王的帖子數目超過總數的一半
解法:每次刪除兩個不同的ID,最後剩下來的不能刪除的就是水王的ID
實現: 1.本例用一個數組模擬帖子,其中有一個標號的帖子超過總數的一半
2.先存放第一個ID,後面的ID來比較,若值相同,則,計數器加1;
若不相同:
若此時計數器不爲0.則計數器減一
若此時計數器爲0.則替換值,計數器加1
3.遍歷數組一邊,保存下來的值就是模擬的水王
代碼實現:
#include<iostream> using namespace std; struct KingNode{ int value; int count; }; int findKing(int post[], int len){ KingNode king; king.value=-1; king.count=0; for(int i=0; i<len; i++){ if(post[i] != king.value){ if(king.count == 0){ king.value = post[i]; king.count++; }else king.count--; }else king.count++; } return king.value; } int main(){ int post[]={2,5,6,1,3,2,42,2,5,2,2,2,2}; int post1[]={2,2,2,1,3,2,42,2,5,2,3,2,7}; int len=sizeof(post)/sizeof(int); std::cout<<"the post king is: "<<findKing(post,len)<<endl; std::cout<<"the post1 king is: "<<findKing(post1,len)<<endl; return 0; }
運行結果:
題外話,如果自己都看不起自己,那活着還有什麼意義?