100340. 三角形的最大高度
给你两个整数 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
原站题解
golang 解法, 执行用时: 0 ms, 内存消耗: 2.2 MB, 提交时间: 2024-10-15 09:14:19
func maxHeightOfTriangle(red int, blue int) int { cnt := [2]int{0, 0} // 分别记录偶数行和奇数行分别放了多少个球 i := 1 for { cnt[i%2] += i if (cnt[0] > red || cnt[1] > blue) && (cnt[0] > blue || cnt[1] > red) { return i - 1 } i++ } }
python3 解法, 执行用时: 39 ms, 内存消耗: 16.3 MB, 提交时间: 2024-10-15 09:10:58
# 枚举 class Solution: def maxHeightOfTriangle(self, red: int, blue: int) -> int: cnt = [0, 0] # 分别记录偶数行和奇数行分别放了多少个球 for i in count(1): cnt[i % 2] += i if (cnt[0] > red or cnt[1] > blue) and (cnt[0] > blue or cnt[1] > red): return i - 1
java 解法, 执行用时: 0 ms, 内存消耗: 39.9 MB, 提交时间: 2024-07-01 09:13:04
class Solution { public int maxHeightOfTriangle(int red, int blue) { return Math.max(f(red, blue), f(blue, red)); } private int f(int n, int m) { int odd = (int) Math.sqrt(n); int even = (int) ((Math.sqrt(m * 4 + 1) - 1) / 2); return odd > even ? even * 2 + 1 : odd * 2; } }
cpp 解法, 执行用时: 0 ms, 内存消耗: 7.3 MB, 提交时间: 2024-07-01 09:12:51
class Solution { int f(int n, int m) { int odd = sqrt(n); int even = (sqrt(m * 4 + 1) - 1) / 2; return odd > even ? even * 2 + 1 : odd * 2; } public: int maxHeightOfTriangle(int red, int blue) { return max(f(red, blue), f(blue, red)); } };
golang 解法, 执行用时: 0 ms, 内存消耗: 2.3 MB, 提交时间: 2024-07-01 09:12:30
func f(n, m int) int { odd := int(math.Sqrt(float64(n))) even := int((math.Sqrt(float64(m*4+1)) - 1) / 2) if odd > even { return even*2 + 1 } return odd * 2 } func maxHeightOfTriangle(red, blue int) int { return max(f(red, blue), f(blue, red)) }
python3 解法, 执行用时: 45 ms, 内存消耗: 16.3 MB, 提交时间: 2024-07-01 09:12:17
class Solution: ''' 奇数行放红球,偶数行放蓝球;或者奇数行放蓝球,偶数行放红球。 计算最多能放多少排。两种情况取最大值。 ''' def maxHeightOfTriangle(self, red: int, blue: int) -> int: def f(n: int, m: int) -> int: odd = isqrt(n) even = int((sqrt(m * 4 + 1) - 1) / 2) return even * 2 + 1 if odd > even else odd * 2 return max(f(red, blue), f(blue, red))