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.分别将红蓝作为收个放置的对象进行计算,得出最大高度
2.使用奇偶数来交替判断

完整代码:
    class Solution {
        public static int maxHeightOfTriangle(int red, int blue) {
            return Math.max(maxHeight(red, blue), maxHeight(blue, red));
        }

        public static int maxHeight(int red, int blue) {
            // 初始化变量i为1,用于在循环中递增并进行条件判断
            int count = 1;
            do {
                // 判断i是否为奇数,如果是奇数,则对x进行操作
                if (count % 2 == 1) {
                    // 从x中减去i的值
                    red -= count;
                    // 如果x的值小于0,则返回i-1
                    if (red < 0) {
                        return count - 1;
                    }
                } else {
                    // 如果i为偶数,则对y进行操作
                    // 从y中减去i的值
                    blue -= count;
                    // 如果y的值小于0,则返回i-1
                    if (blue < 0) {
                        return count - 1;
                    }
                }
                // 递增i的值,为下一次循环做准备
                count++;
            } while (true);
            // 该循环将持续执行,直到达到返回条件
        }
    }
posted @ 2024-10-15 09:30  JAVA-CHENG  阅读(10)  评论(0编辑  收藏  举报