有红、黄、蓝三种颜色的气球。
在牛客王国,1个红气球+1个黄气球+1个蓝气球可以兑换一张彩票。
2个红气球+1个黄气球可以兑换1个蓝气球。
2个黄气球+1个蓝气球可以兑换1个红气球。
2个蓝气球+1个红气球可以兑换1个黄气球。
现在牛牛有a个红气球,b个黄气球, c个蓝气球,牛牛想知道自己最多可以兑换多少张彩票。
有红、黄、蓝三种颜色的气球。
在牛客王国,1个红气球+1个黄气球+1个蓝气球可以兑换一张彩票。
2个红气球+1个黄气球可以兑换1个蓝气球。
2个黄气球+1个蓝气球可以兑换1个红气球。
2个蓝气球+1个红气球可以兑换1个黄气球。
1,7,5
3
可以用4个黄气球和2个蓝气球换2个红气球,这样就有了3个红气球,3个黄气球,3个蓝气球,可以换3个彩票。
第一个参数a代表红气球个数第二个参数b代表黄气球个数第三个参数c代表蓝气球个数
class Solution { public: /** * 三色球 * @param a int整型 * @param b int整型 * @param c int整型 * @return int整型 */ int solve(int a, int b, int c) { int m = min(a, min(b, c)), s=m; a -= m; b -= m; c -= m; if(a==0) return s + min(b/3, c/2); else if(b==0) return s + min(c/3, a/2); else if(c==0) return s + min(a/3, b/2); return s; } };
思路:让某个数量最小的颜色球变为0,再将其他两种球转为数量最小的球。 假设要转换x个球,并且是红球最小的情况下。 b-2*x>=x c-x>=x 得到x需要满足Math.min(b/3,c/2); import java.util.*; public class Solution { public int solve (int a, int b, int c) { // write code here int[] arr = new int[3]; arr[0] = a; arr[1] = b; arr[2] = c; Arrays.sort(arr); int res = 0; // 红最小 res += arr[0]; arr[1] -= arr[0]; arr[2] -= arr[0]; if(arr[0] == a){ if(b == (arr[1]+res)){ res += (Math.min(arr[1]/3,arr[2]/2)); }else{ res += (Math.min(arr[2]/3,arr[1]/2)); } // 黄色最小 }else if(arr[0] == b){ if(c == (arr[1]+res)){ res += (Math.min(arr[1]/3,arr[2]/2)); }else res += (Math.min(arr[1]/2,arr[2]/3)); }else if(arr[0] == c){ if(a == (arr[1]+res)){ res += (Math.min(arr[1]/3,arr[2]/2)); }else res+=(Math.min(arr[1]/2,arr[2]/3)); } return res; } }