回旋镖定义为一组三个点,这些点各不相同且不在一条直线上。
给出平面上三个点组成的列表,判断这些点是否可以构成回旋镖。
示例 1:
输入:[[1,1],[2,3],[3,2]]
输出:true
示例 2:
输入:[[1,1],[2,2],[3,3]]
输出:false
解:
计算斜率判断是否相等
class Solution {
public:
static bool cmp(const vector<int>&a,const vector<int> &b)
{
if(a[0]==b[0])
return a[1]<b[1];
else return a[0]<b[0];
}
bool isBoomerang(vector<vector<int>>& points) {
//判断点是否相同
if(points[0][0]==points[1][0]&&points[0][1]==points[1][1])
return false;
if(points[1][0]==points[2][0]&&points[1][1]==points[2][1])
return false;
if(points[0][0]==points[2][0]&&points[0][1]==points[2][1])
return false;
//排序
sort(points.begin(),points.end(),cmp);
double k1;
if(points[1][0]-points[0][0]!=0)
{
k1=((points[1][1]-points[0][1])*1.0)/((points[1][0]-points[0][0])*1.0);
}
else k1=' ';//空格标记斜率不存在
double k2;
if(points[2][0]-points[1][0]!=0)
{
k2=((points[2][1]-points[1][1])*1.0)/((points[2][0]-points[1][0])*1.0);
}
else k2=' ';//空格标记斜率不存在
if(k1==k2)
return false;
else return true;
}
};