LeetCode: 973. 最接近原点的 K 个点
- 哈希表暴力 >> 或者用 大顶堆
map暴力
public int[][] kClosest(int[][] points, int K) {
// 默认按 key 的升序
Map<Double, List<Integer>> map = new TreeMap<>();
// 初始化 map
for (int i = 0; i < points.length; i++) {
double dis = Math.sqrt(Math.pow(points[i][0], 2) + Math.pow(points[i][1], 2));
List<Integer> list = map.get(dis);
if(list == null) list = new ArrayList<>();
list.add(i);
map.put(dis, list);
}
int[][] ans = new int[K][2];
int cnt = 0;
// 遍历
for (List<Integer> val: map.values()) {
for (Integer index: val) {
ans[cnt++] = points[index];
K--;
if(K == 0) break;
}
if(K == 0) break;
}
return ans;
}
冒泡暴力 >> 超时