本文共 1131 字,大约阅读时间需要 3 分钟。
Given the coordinates of four points in 2D space, return whether the four points could construct a square.
The coordinate (x,y) of a point is represented by an integer array with two integers.
Example:
Input: p1 = [0,0], p2 = [1,1], p3 = [1,0], p4 = [0,1] Output: TrueNote:
All the input integers are in the range [-10000, 10000]. A valid square has four equal sides with positive length and four equal angles (90-degree angles). Input points have no order.本题的主要思路是判断四条边是否相等,两条对角线是否相等。
int squre_dis(vector & p1, vector & p2){ return pow(p1[0] - p2[0], 2) + pow(p1[1] - p2[1], 2);}bool validSquare(vector & p1, vector & p2, vector & p3, vector & p4) { int d1 = squre_dis(p1, p2), d2 = squre_dis(p1, p3), d3 = squre_dis(p1, p4), d4 = squre_dis(p2, p3), d5 = squre_dis(p2, p4), d6 = squre_dis(p3, p4); if (d1 == 0 || d2 == 0 || d3 == 0 || d4 == 0 || d5 == 0 || d6 == 0) return false; set res; res.insert(d1), res.insert(d2), res.insert(d3), res.insert(d4), res.insert(d5), res.insert(d6); if (res.size() == 2)return true; return false;}
转载地址:http://gixei.baihongyu.com/