题解 | #微信红包#

微信红包

https://www.nowcoder.com/practice/fbcf95ed620f42a88be24eb2cd57ec54

import java.util.*;

public class Gift {
    public int getValue(int[] gifts, int n) {
        // write code here
        int pd = n / 2 + n % 2;
        Arrays.sort(gifts);
        int []sum=new int[100010];
        for(int i=0;i<gifts.length;i++){
            sum[gifts[i]]++;
            if(sum[gifts[i]]++>=pd) return gifts[i];
        }
        return 0;
            
    }
}

先对gifts数组进行排序(升序还是降序都可以,目的是让相同金额的数字相邻),然后遍历排序过的数组,将金额出现的次数存入sum数组,顺便判断次数是否超过n/2(奇数需要+1,所以n/2+n%2)

全部评论

相关推荐

不愿透露姓名的神秘牛友
07-03 17:30
点赞 评论 收藏
分享
积极的小学生不要香菜:你才沟通多少,没500不要说难
点赞 评论 收藏
分享
陈逸轩1205:才105 哥们在养生呢
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务