方法:计算斜率
--注意先排序
--注意溢出和精度损失问题
class Solution {
public int minimumLines(int[][] stockPrices) {
int n = stockPrices.length;
if (n == 1) return 0;
if (n == 2) return 1;
Arrays.sort(stockPrices, (a, b) -> a[0] - b[0]);
int ans = 1;
long up = (long)stockPrices[1][1] - stockPrices[0][1];
long down = (long)(stockPrices[1][0] - stockPrices[0][0]);
for (int i = 2; i < n; i++) {
long tempUp = (long)stockPrices[i][1] - stockPrices[i - 1][1];
long tempDown = (long)(stockPrices[i][0] - stockPrices[i - 1][0]);
if (up * tempDown != down * tempUp) {
up = tempUp;
down = tempDown;
ans++;
}
}
return ans;
}
}