欢聚时代吧
点赞 1

相关推荐

10-15 20:50
已编辑
去哪儿_后端(准入职员工)
小红拿到了一个长度为n的数组&nbsp;a,每次操作小红可以选择数组中的任意一个数减去&nbsp;x,小红一共能进行&nbsp;k&nbsp;次。小红想在&nbsp;k&nbsp;次操作之后,数组的最大值尽可能小。请你返回这个最大值。n为1~10^5a,k,x为1~10^9示例输入:5&nbsp;&nbsp;3&nbsp;&nbsp;51&nbsp;&nbsp;4&nbsp;&nbsp;3&nbsp;&nbsp;11&nbsp;&nbsp;2输入为n,k,x&nbsp;以及数组a的值示例输出:3想知道这道题有没有比堆排更好的做法,我堆排一直tle。import&nbsp;java.util.PriorityQueue;import&nbsp;java.util.Scanner;public&nbsp;class&nbsp;Main&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;static&nbsp;void&nbsp;main(String[]&nbsp;args)&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Scanner&nbsp;scanner&nbsp;=&nbsp;new&nbsp;Scanner(System.in);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;n&nbsp;=&nbsp;scanner.nextInt();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;long&nbsp;k&nbsp;=&nbsp;scanner.nextLong();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;long&nbsp;x&nbsp;=&nbsp;scanner.nextLong();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;long[]&nbsp;a&nbsp;=&nbsp;new&nbsp;long[n];&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PriorityQueue&nbsp;pq&nbsp;=&nbsp;new&nbsp;PriorityQueue<>((o1, o2) ->&nbsp;o2.compareTo(o1));&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(int&nbsp;i&nbsp;=0;i&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a[i]&nbsp;=&nbsp;scanner.nextLong();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pq.add(a[i]);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} while(k>0){&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Long&nbsp;top&nbsp;=&nbsp;pq.poll();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Long&nbsp;nextTop&nbsp;=&nbsp;pq.peek();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Long&nbsp;dif&nbsp;=&nbsp;top-nextTop;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Long&nbsp;num&nbsp;=&nbsp;dif/x;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;num&nbsp;=&nbsp;Math.min(k-1,num);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;k-=(num+1);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;top-=(num+1)*x;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pq.add(top);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(pq.peek());&nbsp;&nbsp;&nbsp;&nbsp;}}
点赞 评论 收藏
分享
牛客网
牛客企业服务