Max Points on a Line LeetCode solution in JavaScript

1
/**
2
* @param {number[][]} points
3
* @return {number}
4
*/
5

6
var maxPoints = function (points) {
7
if (points.length === 1) {
8
return 1;
9
}
10

11
const slopes = {};
12
let dx, dy;
13
let xbase, ybase;
14
let xref, yref, key;
15
const INFINITE_SLOPE = "infinite";
16

17
for (let i = 0; i < points.length; i++) {
18
[xbase, ybase] = points[i];
19

20
for (let j = i + 1; j < points.length; j++) {
21
[xref, yref] = points[j];
22

23
if (xref === xbase) {
24
key = `x = ${xref}`;
25
} else {
26
dx = xref - xbase;
27
dy = yref - ybase;
28

29
let m = dy / dx;
30
let c = yref - m * xref;
31

32
m = m.toFixed(4);
33
c = c.toFixed(4);
34

35
key = `y = ${m}x + ${c}`;
36
}
37

38
slopes[key] || (slopes[key] = 0);
39
slopes[key]++;
40
}
41
}
42

43
const maxPairs = Math.max(...Object.values(slopes));
44

45
if (maxPairs === 2) {
46
return 2;
47
}
48

49
for (let i = 1; i <= 300; i++) {
50
if ((i * (i - 1)) / 2 === maxPairs) {
51
return i;
52
}
53
}
54

55
return 0;
56
};

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0