1. 程式人生 > 其它 >149. 直線上最多的點數 力扣(困難) 還行,題解看了一小眼

149. 直線上最多的點數 力扣(困難) 還行,題解看了一小眼

題目描述:

給你一個數組points,其中points[i] = [xi, yi]表示X-Y平面上的一個點。求最多有多少個點在同一條直線上。

示例 1:

輸入:points = [[1,1],[2,2],[3,3]]
輸出:3

示例 2:

輸入:points = [[1,1],[3,2],[5,3],[4,1],[2,3],[1,4]]
輸出:4

題源:https://leetcode-cn.com/problems/max-points-on-a-line/

題解:感覺就是數學題

class Solution {
public:
    int maxPoints(vector<vector<int
>>& points) { int l=points.size(); int res=1,ans=0; bool flag[305]; memset(flag,0,sizeof(flag)); for(int i=0;i<l;i++) { memset(flag,0,sizeof(flag)); flag[i]=1; for(int j=i+1;j<l;j++) {
//double k=(points[j][1]-points[i][1])*1.0/(points[j][0]-points[i][0]); ans=2; flag[j]=1; for(int t=j+1;t<l;t++) { if (!flag[t]) { // double kk=(points[t][1]-points[i][1])*1.0/(points[t][0]-points[i][0]);
if ( ((points[j][1]-points[i][1])*(points[t][0]-points[i][0])) == ((points[t][1]-points[i][1])*(points[j][0]-points[i][0])) ) ans++; } } res=max(res,ans); } } return res; } };