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