题目:有效的正方形
class Solution {
public:
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;
//针对[0,0],[0,0]这种情况
vector<long long> lengths(6);
lengths[0] = len(p1,p2);
lengths[1] = len(p1,p3);
lengths[2] = len(p1,p4);
lengths[3] = len(p2,p3);
lengths[4] = len(p2,p4);
lengths[5] = len(p3,p4);
//分别计算出两点之间距离,包括四条边和两条对角线
sort(lengths.begin(),lengths.end());
//进行排序,最长的两条就是对角线
return lengths[0]==lengths[1] && lengths[2]==lengths[3] && lengths[0]==lengths[3] && lengths[4]==lengths[5];
//如果变长相等且对角线也相等,则为正方形
}
long long len(vector<int>& x,vector<int>& y){
return 1ll*(x[0]-y[0])*(x[0]-y[0])+1ll*(x[1]-y[1])*(x[1]-y[1]);
}
};