1232.缀点成线(Java)

题目描述:

给定一个数组 coordinates ,其中 coordinates[i] = [x, y] , [x, y] 表示横坐标为 x、纵坐标为 y 的点。请你来判断,这些点是否在该坐标系中属于同一条直线上。

输入:

coordinates = [[1,2],[2,3],[3,4],[4,5],[5,6],[6,7]]

输出:

true

代码实现:

java 复制代码
//缀点成线
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;
    }
}
相关推荐
fengfuyao9856 分钟前
基于MATLAB的GUI实现人脸检测、眼睛检测以及LBP直方图显示
开发语言·计算机视觉·matlab
★YUI★10 分钟前
学习游戏制作记录(玩家掉落系统,删除物品功能和独特物品)8.17
java·学习·游戏·unity·c#
微小的xx13 分钟前
java + html 图片点击文字验证码
java·python·html
CHANG_THE_WORLD23 分钟前
# C++ 中的 `string_view` 和 `span`:现代安全视图指南
开发语言·c++
mask哥25 分钟前
详解flink java基础(一)
java·大数据·微服务·flink·实时计算·领域驱动
克拉克盖博43 分钟前
chapter03_Bean的实例化与策略模式
java·spring·策略模式
Franklin1 小时前
Python界面设计【QT-creator基础编程 - 01】如何让不同分辨率图像自动匹配graphicsView的窗口大小
开发语言·python·qt
DashVector1 小时前
如何通过Java SDK分组检索Doc
java·数据库·面试
郝学胜-神的一滴1 小时前
深入理解QFlags:Qt中的位标志管理工具
开发语言·c++·qt·程序人生
程序员清风1 小时前
跳表的原理和时间复杂度,为什么还需要字典结构配合?
java·后端·面试