这道题的思路就是求斜率。斜率不同的话就不是同一直线。要注意的是求斜率时,k是double类型的所以在做除法时加上 "1.0",我就是忘了这一点,检查了很久白白浪费了很多时间。
耗时20ms
class Solution {
public:
bool checkStraightLine(vector<vector<int>>& coordinates) {
if(coordinates.size() == 2)
return true;
int dx,dy;
double k;
dx = coordinates[1][0] - coordinates[0][0];
dy = coordinates[1][1] - coordinates[0][1];
if(dx != 0)
{
k = 1.0 * dy/dx;
}
double ki;
int dxi,dyi;
for(int i = 2;i < coordinates.size(); ++i )
{
dxi = coordinates[i][0] - coordinates[i-1][0];
dyi = coordinates[i][1] - coordinates[i-1][1];
if(dxi != 0)
{
ki = 1.0 * dyi / dxi;
if( (dx == 0) || (ki!=k) )
return false;
}else{
if(dx != 0)
return false;
}
}
return true;
}
};