469 convex polygon

  • 核心思想是如何找到多边形是凸包的规律用算法表现出来

Given a list of points that form a polygon when joined sequentially, find if this polygon is convex (Convex polygon definition).

class Solution {
public:
    // if and only if >0
    bool isClockWise(int a,int b,int c,int d){
        return (a*d-b*c)>0;
    }
    bool isConvex(vector<vector<int>>& points) {
        bool isclock = isClockWise(points[1][0]-points[0][0],points[1][1]-points[0][1],points[2][0]-points[0][0],points[2][1]-points[0][1]);
        int n=points.size();
        for(int i=1;i<points.size();++i){
            int p1=(i+n)%n;
            int p2=(i+n+1)%n;
            bool tmp=isClockWise(points[p1][0]-points[i][0],points[p1][1]-points[i][1],points[p2][0]-points[i][0],points[p2][1]-points[i][1]);
            if(tmp!=isclock)return false;
        }
        return true;
    }
};

results matching ""

    No results matching ""