【Leetcode】3000. 对角线最长的矩形的面积

75 阅读1分钟

leetcode-3000.png

对角线越长,那么就面积越大
但是如果对角线相同,那么越接近正方形其面积是越大的,这里就需要在对角线相同的时候做出判断即可。

解法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;
};