Files
obsidian/АиСД/Задачи/LeetCode/Line reflection.md
T
roma-dxunvrs f57762fd3b Init
2026-09-03 21:40:46 +03:00

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;
}
}
```