思路:先用map將輸入的點去重(這裡要自定義比較函式),然後對於每乙個點,遍歷其後面的每乙個點,記錄在一條直線上的點的數目,在記錄的過程中維護最大值。開始時在map的自定義比較函式上面卡了殼,為此還得到codeblock這種ide除錯才看的出來,用vs的話比較函式少了const照樣能執行
/**
* definition for a point.
* struct point
* point(int a, int b) : x(a), y(b) {}
* };
*/class cmp
int maxpoints(vector
& points)
mapint,int>,int> mmap;//記錄該定點開始的斜率為pair的直線的數目
for(auto it_i=pointsmap.begin();it_i!=pointsmap.end();it_i++)
if(mmap.count(make_pair(a,b))==0)
//printf("a=%d b=%d %d\n",a,b,mmap[make_pair(a,b)]);}}
return maxn;
}};
LeetCode 149 直線上最多的點數
給定乙個二維平面,平面上有 n 個點,求最多有多少個點在同一條直線上。思路 兩點可以確定一條直線,那麼選擇固定乙個點,求其他點與固定點的斜率,如果斜率相同,那麼斜率相同的點在同一條直線上。注意點 1.儲存斜率可以使用雜湊表進行 2.測試資料中精度要求很高,使用double進行計算會出現錯誤,可以選擇...
LeetCode 149 直線上最多的點數
給定乙個二維平面,平面上有 n 個點,求最多有多少個點在同一條直線上。示例 1 輸入 1,1 2,2 3,3 輸出 3解釋 o o o 0 1 2 3 4示例 2 輸入 1,1 3,2 5,3 4,1 2,3 1,4 輸出 4解釋 o o o o o o 0 1 2 3 4 5 6此題給了乙個陣列,...
LeetCode 149 直線上最多的點數
給定乙個二維平面,平面上有 n 個點,求最多有多少個點在同一條直線上。示例 1 輸入 1,1 2,2 3,3 輸出 3 解釋 o o o 0 1 2 3 4 示例 2 輸入 1,1 3,2 5,3 4,1 2,3 1,4 輸出 4 解釋 o o o o o o 0 1 2 3 4 5 6?對每乙個點...