diff --git a/sample.cpp b/sample.cpp new file mode 100644 index 0000000..30cda6a --- /dev/null +++ b/sample.cpp @@ -0,0 +1,103 @@ +#include +#include +#include +#include +using namespace std; + +class Solution{ + public: + struct Point{ + int x; + int y; + bool operator<(const Point& other) const{ + if (x!=other.x)return x x){ + for(auto e: x){ + cout<<'('< x, vector y){ + + vector poi; + set hor; + set ver; + + int n = x.size(); + for(int i = 0 ; i < n ; i++){ + poi.push_back({x[i], y[i]}); + } + sort(poi.begin(), poi.end(), cmp); + int cur_x = poi[0].x; + int sum_x = 0; + Point last_point = poi[0]; + hor.insert(last_point); + // horizontal + for(int i = 1 ; i < n ; i++){ + Point cur_p = poi[i]; + if(cur_p.x == cur_x){ + sum_x += 1; + } + else{ + if(sum_x >= 2) + hor.insert(last_point); + hor.insert(cur_p); + sum_x = 1; + cur_x = cur_p.x; + } + last_point = cur_p; + } + //vertical + sort(poi.begin(), poi.end(), cmp1); + int cur_y = poi[0].y; + int sum_y = 1; + last_point = poi[0]; + ver.insert(last_point); + for(int i = 1 ; i < n ; i++){ + Point cur_p = poi[i]; + if(cur_p.y == cur_y){ + sum_y += 1; + } + else{ + if(sum_y >= 2) + ver.insert(last_point); + ver.insert(cur_p); + sum_y = 1; + cur_y = cur_p.y; + } + last_point = cur_p; + } + set rlt; + for(const auto& point : ver){ + rlt.insert(point); + } + for(const auto& point : hor){ + rlt.insert(point); + } + + return n - rlt.size(); + } +}; +int main(){ + Solution *sol = new Solution(); + vectorx = {0, 0, 0, 0, 0, 1, 1, 1, 2, -1, -1, -2, -1}; + vectory = {-1, 0, 1, 2, -2, 0, 1, -1, 0, 1, -1, 0, 0}; + cout<numIdleDrives(x,y)<x1 = {1, 1, 1, 2, 2, 2, 2, 3, 3, 3}; + vectory1 = {1, 2, 3, 1, 2, 3, 5, 1, 2, 3}; + cout<numIdleDrives(x1,y1)<x2 = {0, -1,0,0,3,5,4,4,4}; + vectory2 = {0,0,1,-1,0,0,1,-1,0}; + cout<numIdleDrives(x2,y2)<