leetcode
3200. 三角形的最大高度

问题描述

LeetCode 3200. 三角形的最大高度 (opens in a new tab),难度简单

给你两个整数 redblue,分别表示红色球和蓝色球的数量。你需要使用这些球来组成一个三角形,满足第 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);
    }
}