2D 평면에 n개의 점이 있다고 가정하면 y축에 평행한 선이 주어진 점을 대칭적으로 반영하는지 확인해야 합니다. 즉, 주어진 선 위에 모든 점을 반사한 후 원래 점의 집합은 반영된 점과 동일합니다.
따라서 입력이 점 =[[1,1],[-1,1]]
와 같은 경우

그러면 출력이 true가 됩니다.
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
-
한 세트를 정의하십시오.
-
n :=포인트 크기
-
minVal :=inf
-
maxVal :=-inf
-
initialize i :=0의 경우, i
-
minVal :=minVal 및 포인트의 최소값[i, 0]
-
maxVal :=maxVal 및 포인트의 최대값[i, 0]
-
ok
에 점[i] 삽입
-
-
mid :=maxVal + minVal
-
initialize i :=0의 경우, i
-
x :=포인트[i, 0]
-
y :=포인트[i, 1]
-
x :=중간 - x
-
{ x, y }가 정상이 아니면 -
-
거짓을 반환
-
-
-
true를 반환
예시
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
bool isReflected(vector<vector<int<>& points) {
set<vector<int< > ok;
int n = points.size();
int minVal = INT_MAX;
int maxVal = INT_MIN;
for (int i = 0; i < n; i++) {
minVal = min(minVal, points[i][0]);
maxVal = max(maxVal, points[i][0]);
ok.insert(points[i]);
}
int mid = maxVal + minVal;
for (int i = 0; i < n; i++) {
int x = points[i][0];
int y = points[i][1];
x = mid - x;
if (!ok.count({ x, y }))
return false;
}
return true;
}
};
main(){
Solution ob;
vector<vector<int<> v = {{1,1},{-1,1}};
cout << (ob.isReflected(v));
} 입력
{{1,1},{-1,1}} 출력
1