淘天笔试4.10 第一题

凭回忆写的,看提示不让切屏,考试时候没保存

一组数据的时候,多组数据加上for循环就ok了

@Test
public void test(){
    int [] nums = new int[]{3,2,2,2,1,1,1,3};
    int k = 3;
    Map<Integer,Integer> map = new HashMap<>();
    for(int i = 0; i < nums.length; ++i){
        map.put(nums[i],map.getOrDefault(nums[i],0)+1);
    }
    Set<Integer> set = new HashSet<>();
    Arrays.sort(nums);
    for(int i = nums.length- 1; i >= 0; i--){
        if(set.contains(nums[i])){
            continue;
        }
        set.add(nums[i]);
        if(map.get(nums[i]) >= k){
            System.out.println(nums[i]);
            return;
        }
        int sum = 0;
        for(int key : map.keySet()){
            if(key == nums[i]){
                continue;
            }
            sum += Math.min(map.get(key),map.get(nums[i]));
            if(sum >= k-map.get(nums[i])){
                System.out.println(nums[i]);
                return;
            }
        }
    }
}

#笔试题解#
全部评论
倒数第三行是if(sum>=k-map.get(nums[i]))吧
1 回复
分享
发布于 04-11 14:18 湖南
还有其他的题解嘛
点赞 回复
分享
发布于 04-10 22:12 山东
联易融
校招火热招聘中
官网直投
大佬牛掰
点赞 回复
分享
发布于 04-11 11:45 广东
问下,,他写不给import,map咋用,我这用了就报错?
点赞 回复
分享
发布于 04-11 12:21 湖南

相关推荐

6 8 评论
分享
牛客网
牛客企业服务