題目來源
題目描述
春節期間小明使用微信收到很多個紅包,非常開心。在查看領取紅包記錄時發現,某個紅包金額出現的次數超過了紅包總數的一半。請幫小明找到該紅包金額。寫出具體算法思路和代碼實現,要求算法儘可能高效。
給定一個紅包的金額數組gifts及它的大小n,請返回所求紅包的金額。
若沒有金額超過總數的一半,返回0。
題目解析
數據可能有不存在超過紅包一半的,這個時候就要輸出0;即該金額的數目必須 大於 紅包數一半,不能小於等於。
如果一個數出現次數超過一半了,排序過後,必然排在中間,則最後遍歷整個排序後的數組查看是否符合條件。
題目解答
import java.util.*;
public class Gift {
public int getValue(int[] gifts, int n) {
Arrays.sort(gifts);
int a=gifts[n/2];
int num=0;
for(int i=0;i<gifts.length;i++){
if(gifts[i]==a){
num++;
}
}
return num<=n/2?0:a;
}
}