题目描述:
LeetCode第1232题 缀点成线
类型简单
思路:
由前两点确定一条直线
然后再判断后面的点是否在这条直线上
代码如下:
class Solution {
public:
bool checkStraightLine(vector<vector<int>>& coordinates) {
if(coordinates.size()<3) return true;
int x=coordinates[1][0]-coordinates[0][0];
int y=coordinates[1][1]-coordinates[0][1];
for(int i=2;i<coordinates.size();i++){
if(x==0&&y==0){
if((coordinates[i][0]-coordinates[i-1][0]==x)&&(coordinates[i][1]-coordinates[i-1][1]==y))
continue;
else return false;
}
else if(x==0&&y!=0){
if(coordinates[i][0]-coordinates[i-1][0]==x)
continue;
else return false;
}
else if(x!=0&&y==0){
if(coordinates[i][1]-coordinates[i-1][1]==y)
continue;
else return false;
}
else if(x!=0&&y!=0){
if((coordinates[i][0]-coordinates[i-1][0]!=0)&&(coordinates[i][1]-coordinates[i-1][1]!=0)){
if(x*(coordinates[i][1]-coordinates[i-1][1])==(coordinates[i][0]-coordinates[i-1][0])*y)
continue;
else return false;
}
else return false;
}
}
return true;
}
};