牛客编程巅峰赛S1第10场 - 青铜&白银

答案代码有吗?一起交流一下呀,第一次搞这个。我写下我的代码吧,第一题大家肯定都会
public int Mostvictories (int n, int p1, int q1, int m1, int p2, int q2, int m2) {
        return Math.min(p1,q2)+Math.min(q1,m2)+Math.min(m1,p2);
    }

第二题牛课里面超时了,我自己编译器好像没什么问题,有大佬解释一下吗?
public class Nk02 {
    public static void main(String[] args) {
        int n = 2;
        int [] arr = {10,10};
        System.out.println(solve(n, arr));
    }
    public static int solve (int n, int[] a) {
        if(n <= 0) {
            return 0;
        }
        int flag = 1;
        while(true) {
            if(a[flag-1] <= 0){
                return flag;
            }else{
                flag = flag%n+1;
                for (int i = 0; i < n; i++) {
                    a[i]--;
                }
            }
        }
    }
}
第三题通过75%,有什么特殊情况没考虑到吗?
public class Nk03 {
    public static void main(String[] args) {
        int i = Highestscore(3, 3, 0, 0, 0, 0, 3);
//        int i = Highestscore(6,2,2,2,2,2,2);
        System.out.println(i);

    }
    public static int Highestscore (int n, int p1, int q1, int m1, int p2, int q2, int m2) {
        int win =  Math.min(p1,q2)+Math.min(q1,m2)+Math.min(m1,p2);
        int x = p1<q2?q2-p1:p1-q2;
        int y = q1<m2?m2-q1:q1-m2;
        int z = m1<p2?p2-m1:m1-p2;
        int max = Math.max(x,Math.max(y,z));
        if (max == x) {
            return win-y;
        }else if(max == y){
            return win - z;
        }else {
            return win-x;
        }
    }
}


全部评论
我第二题也超时,想不通为啥所有通过的代码循环中都有i<n的条件。
点赞 回复 分享
发布于 2020-08-08 22:34

相关推荐

不愿透露姓名的神秘牛友
11-21 19:05
面试官_我太想进步了:混学生会的,难怪简历这么水
点赞 评论 收藏
分享
10-30 22:18
已编辑
毛坦厂中学 C++
点赞 评论 收藏
分享
菜菜咪:1. 可以使用简历网站的模版,美观度会更好一点 2. 邮箱可以重新申请一个,或者用qq邮箱的别名,部分hr可能会不喜欢数字邮箱 3. 项目经历最好分点描述,类似的项目很多,可以参考一下别人怎么写的 4. 自我评价可加可不加,技术岗更看重技术。最后,加油,优秀士兵
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务