3.25 阿里笔试 第二题分析

做题的时候卡了好久,当时都没有思路,明明实例都过了,提交还是0.
看了广大网友的帖子,发现其中一个暴力的方法,每次降序排序,扣完之后,再进行排序。这样子时间复杂度太高,只能过40%。
然后发现lc2141 是跟这道题是类似的, 具体可以自己去看题解。

import java.util.*;
public class Main{
    public static void main(String args[]){
        Scanner in = new Scanner(System.in);
        int t = in.nextInt();
        for (int i = 0; i < t; i++){
            int[] data = new int[5];
            for (int j = 0; j < 5; j++){
                data[j] = in.nextInt();
            }
            System.out.println(maxTime(data));
        }
    }
    
    public static long maxTime(int[] data) {
    	int n = 4;
        var tot = 0L;
        for (var b : data) {
            tot += b;
        }
        var l = 0L;
        var r = tot / n;
        while (l < r) {
            var x = (l + r + 1) / 2;
            var sum = 0L;
            for (var b : data) {
                sum += Math.min(b, x);
            }
            if (n * x <= sum) {
                l = x;
            } else {
                r = x - 1;
            }
        }
        return l;
    }

}


#阿里笔试##阿里巴巴##面试题目#
全部评论
看到一个很聪明的优化方法,在想不到二分的情况下很有效,就是并不每次只扣1,而是在大于100的时候扣/10的数,这样效率就非常高了
点赞 回复 分享
发布于 2022-04-12 15:30
每次降序排序,扣完之后,进行归并排序的一步,时间复杂度是o(n),而不是从头排序o(nlogn),这样如何?
点赞 回复 分享
发布于 2022-03-25 17:44
生气,我也是 100% 0% 100% 😭😭😭
点赞 回复 分享
发布于 2022-03-25 14:51

相关推荐

我是没经验的毕业生,这啥情况啊会不会是hr在刷kpi
JamesGosli...:字节boss属于是群发了,我都快入职字节了,其他部门还在和我boss打招呼
点赞 评论 收藏
分享
Lorn的意义:你这种岗位在中国现在要么牛马天天加班,要么关系户进去好吃好喝,8年时间,真的天翻地覆了,对于资本来说你就说一头体力更好的牛马,哎,退伍没有包分配你真的亏了。
点赞 评论 收藏
分享
07-01 13:37
门头沟学院 Java
steelhead:不是你的问题,这是社会的问题。
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-09 13:05
TMD找工作本来就烦,这东西什么素质啊😡
Beeee0927:hr是超雄了,不过也是有道理的
点赞 评论 收藏
分享
评论
1
5
分享

创作者周榜

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