Leetcode 3200. 三角形的最大高度
原题链接:Leetcode 3200. 三角形的最大高度
模拟1:
class Solution {
public:
int maxHeightOfTriangle(int red, int blue) {
int tmp1 = 0, tmp2 = 0;
int n1 = 0, n2 = 0;
int ji_sum = n1 * n1;
int ou_sum = n2 * n2 + n2;
// 红1 蓝2
for (int i = 0; i <= 10; i++) {
if ((i * i) <= red && ((i + 1) * (i + 1)) > red)
n1 = i;
}
for (int i = 0; i <= 9; i++) {
if ((i * i + i) <= blue && (i * i + 3 * i + 2) > blue)
n2 = i;
}
tmp1 = n2 >= n1 ? 2 * n1 : 2 * n2 + 1;
n1 = 0;
n2 = 0;
// 蓝1 红2
for (int i = 1; i <= 10; i++) {
if ((i * i) <= blue && ((i + 1) * (i + 1)) > blue)
n1 = i;
}
for (int i = 1; i <= 9; i++) {
if ((i * i + i) <= red && (i * i + 3 * i + 2) > red)
n2 = i;
}
tmp2 = n2 >= n1 ? 2 * n1 : 2 * n2 + 1;
return max(tmp1, tmp2);
}
};
模拟2:这种方法好理解很多
class Solution {
public:
int maxheight(int ji, int ou) {
for (int i = 1;; i++) {
if (i % 2 == 1) {
ji -= i;
if (ji < 0)
return i - 1;
} else {
ou -= i;
if (ou < 0)
return i - 1;
}
}
}
int maxHeightOfTriangle(int red, int blue) {
return max(maxheight(red, blue), maxheight(blue, red));
}
};