30 lines
995 B
Markdown
30 lines
995 B
Markdown
Leetcode #356 | #Medium | [[Хэш-таблицы]] | [[Математика]]
|
|
## Идея
|
|
Отражение относительно x=k, считаем сумму minX+maxX и заводим хэш-сет точек, если есть точка (sum-x,y) то отражение существует
|
|
## [[Big-O]]
|
|
- Время ```O(N)```
|
|
- Память ```O(N)```
|
|
## Код
|
|
```Java
|
|
public class Solution {
|
|
public boolean isReflected(int[][] points) {
|
|
if (points.length <= 1) return true;
|
|
int minX = Integer.MAX_VALUE;
|
|
int maxX = Integer.MIN_VALUE;
|
|
Set<String> set = new HashSet<>();
|
|
for (int[] p : points) {
|
|
minX = Math.min(minX, p[0]);
|
|
maxX = Math.max(maxX, p[0]);
|
|
set.add(p[0] + "#" + p[1]);
|
|
}
|
|
int sum = minX + maxX;
|
|
for (int[] p : points) {
|
|
if (!set.contains((sum - p[0]) + "#" + p[1])) {
|
|
return false;
|
|
}
|
|
}
|
|
return true;
|
|
}
|
|
}
|
|
```
|