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;
}
}
}
#春招##实习##笔试题目#