题目
给你两个整数 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
答案
我的方法
我的方法思路非常简单,我们既然要让他拼成一个三角形,且是每一行的颜色都不一样,那么第一行要么蓝色要么红色,只要确定了第一行的颜色,后面的就都确定了,我分别让红色、蓝色作为第一行,各自求出一个高度,然后我们在将两个高度进行比较后输出,就能得到最好的结果。
这个方法的时间复杂度为O(n)
class Solution:
def maxHeightOfTriangle(self, red: int, blue: int) -> int:
high1=0
high2=0
red1=red
blue1=blue
for i in range(red1+blue1):
if i%2