自学内容网 自学内容网

力扣3200.三角形的最大高度

给你两个整数 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

思路:

方法二:数学公式
核心思路
奇数行放红球,偶数行放蓝球;或者奇数行放蓝球,偶数行放红球。

计算最多能放多少排。两种情况取最大值。

奇数行
设奇数行有 k 行,那么需要

                1+3+5+⋯+(2k−1)=k^{2}
 
个球。(等差数列求和公式)

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))

参考文献:3200. 三角形的最大高度 - 力扣(LeetCode)
  
 


原文地址:https://blog.csdn.net/m0_54373077/article/details/142939190

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!