2018春招360笔试 第二题 附详细注释

笔试的时候着急了,没做出来。笔试完做出来了,大神们看看这样做对吗

    public int func(int r, int g, int b) {
        int res = 0;
        int[] a = new int[3];
        a[0] = r;
        a[1] = g;
        a[2] = b;

        // 先排个序,为了找到最小值。
        // ***的我笔试的时候自己写排序算法找最小值,都忘了用这个方法,我擦。
        Arrays.sort(a);

        // 把最少的球消耗掉
        res += a[0];
        a[1] -= a[0];
        a[2] -= a[0];
        a[0] -= a[0];

        if (a[1] <= a[2] / 2) {
            // 剩下的a[1],a[2]中,如果a[1] <= a[2] / 2,肯定a[1]能全用上。
            res += a[1];
            return res;
        } else {
            // 如果a[1] <= a[2] / 2,则先把a[2] / 2这些消耗掉
            res += a[2] / 2;

            // 消耗掉a[2] / 2之后,把a[1],a[2]更新
            a[1] -= a[2] / 2;
            a[2] -= ((a[2] / 2) * 2);

            // 这个时候a[2]只可能为0,或者1,大家可以举几个例子试试看
            if (a[2] == 0) {

                // 如果a[2]没剩,就直接返回了
                return res;
            } else {

                // 如果a[2]剩了,则看看此时a[1]是否多余两个,如果多余,则a[2]的这一个和a[1]的两个还能凑成一桌,
                // 如果a[1]不多于两个,则就凑不成了
                if (a[1] >= 2) {
                    res += 1;
                    return res;
                }
                return res;
            }
        }
    }
#春招##实习##笔试题目#
全部评论
各位求职的朋友,一起加油!
点赞 回复 分享
发布于 2018-04-01 18:12
通俗易懂
点赞 回复 分享
发布于 2018-04-01 18:56
请问下编程题第二题题目描述还记得吗?想学习一下
点赞 回复 分享
发布于 2018-09-01 11:53

相关推荐

一天代码十万三:这都不能算简历吧
点赞 评论 收藏
分享
zhiyog:哈哈哈,其实是津巴布韦币
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务