> For the complete documentation index, see [llms.txt](https://leetcode.realtemirov.uz/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://leetcode.realtemirov.uz/problems/1232.-check-if-it-is-a-straight-line.md).

# 1232. Check If It Is a Straight Line

🟩 Easy

You are given an array `coordinates`, `coordinates[i] = [x, y]`, where `[x, y]` represents the coordinate of a point. Check if these points make a straight line in the XY plane.

## Example 1

![graph](https://assets.leetcode.com/uploads/2019/10/15/untitled-diagram-2.jpg)

> **Input**: coordinates = \[\[1,2],\[2,3],\[3,4],\[4,5],\[5,6],\[6,7]]\
> **Output**: true

## Example 2

![graph\_2](https://assets.leetcode.com/uploads/2019/10/09/untitled-diagram-1.jpg)

> **Input**: coordinates = \[\[1,1],\[2,2],\[3,4],\[4,5],\[5,6],\[7,7]]\
> **Output**: false

## Constraints

* `2 <= coordinates.length <= 1000`
* `coordinates[i].length == 2`
* `-10^4 <= coordinates[i][0], coordinates[i][1] <= 10^4`
* `coordinates` contains no duplicate point.

## Hint-1

> If there're only 2 points, return true.

## Hint-2

> Check if all other points lie on the line defined by the first 2 points.

## Hint-3

> Use cross product to check collinearity.

## Solution

My Solution

```go
func checkStraightLine(coordinates [][]int) bool {
    x0, x1 := coordinates[0][0], coordinates[1][0]
    y0, y1 := coordinates[0][1], coordinates[1][1]

    for i := 1; i < len(coordinates); i++ {
        x2, y2 := coordinates[i][0], coordinates[i][1]
        if (x1 - x0) * (y2 - y1) != (y1 - y0) * (x2 - x1) {
            return false
        }
    }
    return true
}
```

![result](https://600345290-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrSK2xH3txU3tYyDsT8mQ%2Fuploads%2Fgit-blob-0d6fb96268a782da6df3e03944c4165c5ccc572b%2F1232.png?alt=media)

Leetcode: [link](https://leetcode.com/problems/check-if-it-is-a-straight-line/description)
