A boomerang is a set of 3 points that are all distinct and not in a straight line.
Given a list of three points in the plane, return whether these points are a boomerang.
Example 1:
Input: [[1,1],[2,3],[3,2]] Output: true
Example 2:
Input: [[1,1],[2,2],[3,3]] Output: false
Note:
points.length == 3
points[i].length == 2
0 <= points[i][j] <= 100
题目大意:
问是否给出的3个点在同一条直线上。
解题思路:
与求解一次函数的过程相同,利用前两个点构建一次函数,判断第三个点是否在求出的直线上。
注意:选取前两个点,是否相同;或者k=0;
class Solution {
public:
bool isBoomerang(vector<vector<int>>& points) {
double m = 0;
double x1 = points[0][0];
double y1 = points[0][1];
double x2 = points[1][0];
double y2 = points[1][1];
if(x1==x2&&y1==y2) return false;
// 计算分子
m = x2 - x1;
double k,b;
if (0 == m)
{
if(x1 == points[2][0]) return false;
return true;
}
else
{
k = (y2 - y1) / (x2 - x1);
b = y1 - k * x1;
}
if(double(points[2][1]) == (points[2][0]*k+b)){
return false;
}else{
return true;
}
}
};