solución:
Este título tiene múltiples soluciones:
- Los puntos pueden constituir una línea recta, y después determina si el tercer punto en esta línea recta a
- Si los tres puntos de la zona en una línea recta, así que asegúrese de que se compone de cero, si no en una línea recta, el área no es cero.
código:
class Solution {
public:
bool isBoomerang(vector<vector<int>>& points) {
int x1,y1;
x1 = points[0][0]; y1 = points[0][1];
int x2,y2;
x2 = points[1][0]; y2 = points[1][1];
int x3,y3;
x3 = points[2][0]; y3 = points[2][1];
/* 方法一:直线法
if((y3 - y1)*(x1 - x2) == (y1 - y2)*(x3 - x1))
{
return false;
}
else
{
return true;
}*/
/* 方法二:面积法(已知三点直接求出三角形的面积)
*/
int res = abs(x1*y2 + y1*x3 + x2*y3 - x1*y3 - y1*x2 - y2*x3);
double area = 1.0*res/2;// 计算三角形面积的两倍(一定是整形,后面再/2就可以了)
if(area == 0)
{
return false;
}
else
{
return true;
}
}
};