题解 | #选数# Java 题解

选数

https://www.nowcoder.com/practice/50636077fde843c09bf915d0aef57a99

import java.util.*;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int k = sc.nextInt();
        int s = sc.nextInt();

        int[] nums = new int[n];

        for(int i = 0; i < n;i++){
            nums[i] = sc.nextInt();
        }
        Arrays.sort(nums);

        int l = 0, r = n - 1;
        int res = -1;
        while(l < r){
            int mid = (l + r) >> 1;
            long sum = 0;
            int tl = Math.max(0,mid - k  + 1),tr = mid ;
            for(int i = tl ; i <= tr;i++){
                sum += nums[i];
            }
            if(sum >= s){
                res = nums[mid];
                r = mid;
            }else{
                l = mid + 1;
            }
        }
        System.out.println(res);
    }
}

全部评论

相关推荐

02-14 12:40
门头沟学院 Java
程序员花海:1.面试要求必须Java笔试不一定 2.难度对等秋招 远超于日常实习是因为同一批次且转正很多 竞争压力大 3.第一个加点指标,上线了就把接口性能加上去 使用本地缓存这个不算亮点 只是技术选型,要把为什么采用这个和背后的思考写出来而不是单纯堆叠技术没意义 4.八股要一直看 很容易忘记 5.拼团交易这个老问题 堆积技术 另外建议你把奖项合并到教育背景 没必要拆出来放最后
我的简历长这样
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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