回旋镖定义为一组三个点,这些点各不相同且不在一条直线上。
给出平面上三个点组成的列表,判断这些点是否可以构成回旋镖。
示例 1:
输入:[[1,1],[2,3],[3,2]]
输出:true
示例 2:
输入:[[1,1],[2,2],[3,3]]
输出:false
提示:
points.length == 3
points[i].length == 2
0 <= points[i][j] <= 100
思路:
* 实际上就是求给定三点,判断是否能组成三角形
* 计算三点之间的距离
* 利用三角形的定理判断是否能组成三角形
* 三角形两边之和大于第三边,两边之差小于第三边的性质
代码:
public boolean isBoomerang(int[][] points) {
if(points.length!=3)return false;
int x1 = 0,y1 = 0,x2 = 0,y2 = 0,x3 = 0,y3 = 0;
for (int i = 0; i < points.length; i++) {
int[] p = points[i];
if(i == 0) {
x1 = p[0];y1 = p[1];//第1条边赋值
}else if(i == 1) {
x2 = p[0];y2 = p[1];//第2条边赋值
}else if(i == 2) {
x3 = p[0];y3 = p[1];//第3条边赋值
}
}
// 求出三点之间的距离
double long12=Math.sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
double long13=Math.sqrt((x1-x3)*(x1-x3)+(y1-y3)*(y1-y3));
double long32=Math.sqrt((x3-x2)*(x3-x2)+(y3-y2)*(y3-y2));
//利用三角形 两边之和大于第三遍,两边之差小于第三边的性质,判断是否能够组成三角形
if (long12 + long13 == long32) {
return false;
}
if (long12 + long32 == long13) {
return false;
}
if (long32 + long13 == long12) {
return false;
}
return true;
}
值得收藏一下,哈哈,双100%