题目描述:
给定一个数组 coordinates ,其中 coordinates[i] = [x, y] , [x, y] 表示横坐标为 x、纵坐标为 y 的点。请你来判断,这些点是否在该坐标系中属于同一条直线上。
输入:
coordinates = [[1,2],[2,3],[3,4],[4,5],[5,6],[6,7]]
输出:
true
代码实现:
//缀点成线
public class Main{public static void main(String[] args) {int[][] coordinates = new int[][]{{1, 2}, {2, 3}, {3, 4}, {4, 5}, {5, 6}, {6, 7}};System.out.println(checkStraightLine(coordinates));//true}public static boolean checkStraightLine(int[][] coordinates) {//设:A*X + B*Y = 0;//将方程平移过零点for (int i = 1; i < coordinates.length; i++) {coordinates[i][0] -= coordinates[0][0];coordinates[i][1] -= coordinates[0][1];}//归零coordinates[0][0] = 0;coordinates[0][1] = 0;//计算参数int a = coordinates[1][1];int b = -coordinates[1][0];//判断剩下的点是否在该直线上for (int i = 2; i < coordinates.length; i++) {int[] temp = coordinates[i];//点int x = temp[0];//横坐标int y = temp[1];//纵坐标if (a * x + b * y != 0) {//如果有任意一点不满足方程:则返回结果假return false;}}//循环结束之后,则表示都满足方程:则返回真return true;}
}