问题描述
LeetCode 3200. 三角形的最大高度 (opens in a new tab),难度简单。
给你两个整数 red
和 blue
,分别表示红色球和蓝色球的数量。你需要使用这些球来组成一个三角形,满足第 1 行有 1 个球,第 2 行有 2 个球,第 3 行有 3 个球,依此类推。
每一行的球必须是 相同 颜色,且相邻行的颜色必须 不同。
返回可以实现的三角形的 最大 高度。
示例 1
输入: red = 2, blue = 4 输出: 3 解释:上图显示了唯一可能的排列方式。
示例 2
输入: red = 2, blue = 1 输出: 2 解释:上图显示了唯一可能的排列方式。
示例 3
输入: red = 1, blue = 1 输出: 1
示例 4
输入: red = 10, blue = 1 输出: 2 解释:上图显示了唯一可能的排列方式。
提示:
1 <= red, blue <= 100
题解
暴力
解题思路:先定义第一行是红色球还是蓝色球,然后参数 red
和 blue
一次根据行号递减,递减完判断红色球和蓝色球数量是否大于 0
。
Solution.java
class Solution {
public int maxHeightOfTriangle(int red, int blue) {
int i = 1;
int result = 0;
int r = red, b = blue;
while (true) {
if (i % 2 == 1) {
red -= i;
} else {
blue -= i;
}
if (red >= 0 && blue >= 0) {
i++;
result++;
} else {
break;
}
}
i = 1;
int a = 0;
while (true) {
if (i % 2 == 1) {
b -= i;
} else {
r -= i;
}
if (r >= 0 && b >= 0) {
i++;
a++;
} else {
break;
}
}
return Math.max(a, result);
}
}