3.29百度笔试编程题前两题答案

总结:第一题比较简单些,第二题写到快结束,输出结果是int型,一直为0.00,后来恍然大悟将结果转成long型AC了。算法太难了,第三题一点思路都没,欢迎大佬给出思路。
第一题:
public class Main05 {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        while (in.hasNext()){
            long n = in.nextInt();
            long a = n;
            long b = n - 1;
            System.out.println(a*b-1);
        }

    }
}

第二题:
第二题的主要思路是,因为数最大为10^18,所以如果用减法的话则会复杂度过高,重复的减法便是除法,然后先算一个最大的数,这里我用了排序,
             减去n多少次后,会小于n,便是除法的结果,然后再将结果加到其他n-1个数,继续循环即可。
     Scanner in = new Scanner(System.in);
        while (in.hasNext()){
            int n = in.nextInt();
            long[] a = new long[n];
            for(int i=0;i<n;i++){
                a[i] = in.nextLong();
            }
            Arrays.sort(a);
            if(a[n-1]<n){
                System.out.println(0);
                continue;
            }
            long num = n;
            long count = 0;
            while (a[n-1]>=n){
                count = count + a[n-1]/num;
               for(int i=0;i<n-1;i++){
                   a[i] = a[i] + a[n-1]/num;
               }
               a[n-1] = a[n-1]%num;
               Arrays.sort(a);
            }
            System.out.println(count);
        }


#百度实习##百度##笔试题目#
全部评论
JAVA后台岗位第三题是图论的题目: 我用了深度优先遍历能AC
1 回复 分享
发布于 2020-03-29 21:13
大佬 题型是啥样的,选择+编程吗
点赞 回复 分享
发布于 2022-04-05 18:43
。。。。第二题也太坑了
点赞 回复 分享
发布于 2020-03-29 21:32
为啥和你的算法不一样
点赞 回复 分享
发布于 2020-03-29 21:22
第三题DFS
点赞 回复 分享
发布于 2020-03-29 21:19
原来不能一个一个减呀 怪不得我本地不超时 一提交就超时😂
点赞 回复 分享
发布于 2020-03-29 21:15
第二题我也有这样的想法,但是不能保证最大数一直减的过程中其他数还是比它小吧,这一点想不通。
点赞 回复 分享
发布于 2020-03-29 21:13
在减的过程中最大值不会变嘛
点赞 回复 分享
发布于 2020-03-29 21:11
我跟你代码思路差不多一样,就是写了Int想不到long,第一天30,第二题0
点赞 回复 分享
发布于 2020-03-29 21:06

相关推荐

你包有offer的:我面了10面才进去
点赞 评论 收藏
分享
这就是上等人的社会吗:都先停一停,有没有hxd告诉我在哪里点京东外卖,捣鼓半天,注册成了专送骑手查看图片
投递美团等公司6个岗位 > 京东美团大战,你怎么看?
点赞 评论 收藏
分享
评论
2
14
分享

创作者周榜

更多
牛客网
牛客企业服务