593. 有效的正方形

给定二维空间中四点的坐标,返回四点是否可以构造一个正方形。

一个点的坐标(x,y)由一个有两个整数的整数数组表示。

示例:
输入: p1 = [0,0], p2 = [1,1], p3 = [1,0], p4 = [0,1]
输出: True

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/valid-square
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

题解

/**
 * @param {number[]} p1
 * @param {number[]} p2
 * @param {number[]} p3
 * @param {number[]} p4
 * @return {boolean}
 */
var validSquare = function(p1, p2, p3, p4) {
    let a = Math.pow(p2[0] - p1[0], 2) + Math.pow(p2[1] - p1[1], 2)
    let b = Math.pow(p3[0] - p1[0], 2) + Math.pow(p3[1] - p1[1], 2)
    let c = Math.pow(p4[0] - p1[0], 2) + Math.pow(p4[1] - p1[1], 2)
    let d = Math.pow(p4[0] - p3[0], 2) + Math.pow(p4[1] - p3[1], 2)
    let e = Math.pow(p2[0] - p3[0], 2) + Math.pow(p2[1] - p3[1], 2)
    let f = Math.pow(p2[0] - p4[0], 2) + Math.pow(p2[1] - p4[1], 2)
    let arr = [a, b, c, d, e, f].sort((a, b) => a - b)
    if ([...new Set(arr)].length != 2 || arr[0] == 0) {
        return false
    }
    return true
};