Leetcode 356 Solution
This article provides solution to leetcode question 356 (line-reflection)
Access this page by simply typing in "lcs 356" in your browser address bar if you have bunnylol configured.
Leetcode Question Link
https://leetcode.com/problems/line-reflection
Solution
class Solution {
public:
bool isReflected(vector<pair<int, int>>& points) {
sort(points.begin(), points.end());
int j = 1;
for (int i = 1; i < points.size(); i++)
{
if (points[i].first == points[i - 1].first && points[i].second == points[i - 1].second)
continue;
points[j++] = points[i];
}
points.resize(j);
sort(points.begin(), points.end());
auto points2 = points;
for (auto& point : points2)
point.first = -point.first;
sort(points2.begin(), points2.end());
int n = points.size();
double middle_val = 0;
for (int i = 0; i < n; i++)
{
auto pt1 = points[i];
auto pt2 = points2[i];
pt2.first = -pt2.first;
if (pt1.second != pt2.second)
return false;
if (i == 0)
middle_val = (pt1.first + pt2.first) * 0.5;
else if (middle_val != (pt1.first + pt2.first) * 0.5)
return false;
}
return true;
}
};