题目:
题解:
使用149. 直线上最多的点数中的思路就好了。
代码如下:
using LL = long long;
class Solution {
public:
int minimumLines(vector<vector<int>>& q) {
if(q.size()==1)return 0;
sort(q.begin(),q.end(),[](const auto& a,const auto& b){
return a[0]<b[0];
});
int l=0,r=1,n=q.size();
LL xd1=q[r][0]-q[l][0],yd1=q[r][1]-q[l][1];
int cnt=1;
while(r+1<n)
{
LL xd2=q[r+1][0]-q[r][0],yd2=q[r+1][1]-q[r][1];
// 不是同一条直线了
if(xd1*yd2!=yd1*xd2){
xd1=xd2,yd1=yd2;
cnt++;
}
r++;
}
return cnt;
}
};
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)