牛客-微信紅包(java)

題目來源

微信紅包

題目描述

春節期間小明使用微信收到很多個紅包,非常開心。在查看領取紅包記錄時發現,某個紅包金額出現的次數超過了紅包總數的一半。請幫小明找到該紅包金額。寫出具體算法思路和代碼實現,要求算法儘可能高效。
給定一個紅包的金額數組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;
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章