自学内容网 自学内容网

LeetCode 每日一题 三角形的最大高度

三角形的最大高度

给你两个整数 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
解释:
在这里插入图片描述
上图显示了唯一可能的排列方式。

题解

根据题意,红色球与蓝色球是交替排列的,也就是说,要么是红球放在奇数行,蓝球放在偶数行;要么是红球放在偶数行,蓝球放在奇数行

我们可以使用一个大小为2的数组 arr 记录奇数行与偶数行需要的球的个数,如果球的个数不够则说明此行不能填满,那么就得到了最大高度

代码如下↓

int maxHeightOfTriangle(int red, int blue) {
    int arr[2];
    arr[0]=0;
    arr[1]=0;
    int i=0;
    while(arr[0]<=red && arr[1]<=blue || arr[0]<=blue && arr[1]<=red)
    {
        i++;
        if(i%2==1)
        {
            arr[0]+=i;
        }
        else
        {
            arr[1]+=i;
        }
    }
    return i-1;
}

原文地址:https://blog.csdn.net/2301_80293400/article/details/142962905

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