【騰訊】微信紅包
阿新 • • 發佈:2018-11-05
題目描述
春節期間小明使用微信收到很多個紅包,非常開心。在檢視領取紅包記錄時發現,某個紅包金額出現的次數超過了紅包總數的一半。請幫小明找到該紅包金額。寫出具體演算法思路和程式碼實現,要求演算法儘可能高效。
給定一個紅包的金額陣列gifts及它的大小n,請返回所求紅包的金額。
若沒有金額超過總數的一半,返回0。
測試樣例:
[1,2,3,2,2],5
返回:2
class Gift { public: int getValue(vector<int> gifts, int n) { // write code here int ans = gifts[0]; int num = 1; for(int i = 1;i<n;i++) { if(num == 0) { num = 1; ans = gifts[i]; } else { if(gifts[i] == ans) num++; else num--; } } num = 0; for(auto item:gifts) { if(item == ans) num++; } return num>(n/2)?ans:0; } };