链接:
链接: 593. 有效的正方形
问题描述,示例,和提示:
代码:
class Solution {
public:
int Len(vector<int>& p1, vector<int>& p2)
{
int a = (p1[0]-p2[0])*(p1[0]-p2[0]);
int b = (p1[1]-p2[1])*(p1[1]-p2[1]);
return a+b;
}
bool validSquare(vector<int>& p1, vector<int>& p2, vector<int>& p3, vector<int>& p4) {
if(p1[0] == p2[0] && p1[1] == p2[1]) return false;
vector<int> v(6,0);
v[0] = Len(p1,p2);
v[1] = Len(p1,p3);
v[2] = Len(p1,p4);
v[3] = Len(p2,p3);
v[4] = Len(p2,p4);
v[5] = Len(p3,p4);
sort(v.begin(),v.end());
return v[0]==v[1] && v[0]==v[2] && v[0]==v[3] && v[4]==v[5];
}
};
题目解析:
正方形特点:
四个点可以组成六条边
其中:
1.四条边相等
2.对角线相等