对角线越长,那么就面积越大
但是如果对角线相同,那么越接近正方形其面积是越大的,这里就需要在对角线相同的时候做出判断即可。
解法1
这里的解法先找出最大的对角线集合,放入到samLen中,然后再到sameLen中进行遍历得到结论
但是这里有点啰嗦,没必要用两个for
var areaOfMaxDiagonal = function (dimensions) {
let sameLen = [];
let maxLen = 0;
for (let d of dimensions) {
let [x, y] = d;
let tmp = x ** 2 + y ** 2;
if (maxLen === tmp) {
sameLen.push(d);
} else if (maxLen < tmp) {
maxLen = tmp;
sameLen = [];
sameLen.push(d);
}
}
let res = 0;
for (let item of sameLen) {
let [x, y] = item;
let s = x * y;
res = Math.max(res, s);
}
return res;
};
解法2
这里直接在一个for中解决问题
如果此刻的对角线长度和记录的最大对角线长度一样,那么就取最大值
如果此刻的对角线长度 > 之前的最大长度,那么直接更新最大长度以及面积
var areaOfMaxDiagonal = function (dimensions) {
let area = 0;
let maxLen = 0;
for (let [x, y] of dimensions) {
let tmp = x ** 2 + y ** 2;
if (maxLen === tmp) {
area = Math.max(area, x * y);
} else if (maxLen < tmp) {
maxLen = tmp;
area = x * y;
}
}
return area;
};