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:
1 2
| Input: p1 = [0,0], p2 = [1,1], p3 = [1,0], p4 = [0,1] Output: True
|
Note:
- 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.
判断四个点能不能组成正方形,我是直接算了四个点两两之间的距离(共六个),其中应该有四个边和两个对角线,判断这六个长度是不是这个规律就可以了。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| class Solution { public: bool validSquare(vector<int>& p1, vector<int>& p2, vector<int>& p3, vector<int>& p4) { vector<int> length; length.push_back(getLength(p1, p2)); length.push_back(getLength(p1, p3)); length.push_back(getLength(p1, p4)); length.push_back(getLength(p2, p3)); length.push_back(getLength(p2, p4)); length.push_back(getLength(p3, p4)); sort(length.begin(), length.end()); return (length[0] == length[1] && length[0] == length[2] && length[0] == length[3] && length[4] == length[5] && length[3] != length[4]); } int getLength(vector<int>& p1, vector<int>& p2) { return (p1[0] - p2[0]) * (p1[0] - p2[0]) + (p1[1] - p2[1]) * (p1[1] - p2[1]); } };
|