149. 直線上最多的點數 力扣(困難) 還行,題解看了一小眼
阿新 • • 發佈:2021-06-24
題目描述:
給你一個數組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; } };