1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| class Solution { public int[][] kClosest(int[][] points, int K) { List<List<Integer>> list = new ArrayList<>();
for (int[] nums : points) { list.add(List.of(nums[0], nums[1])); }
list.sort(Comparator.comparingInt(this::distance)); var tmp = list.subList(0, K); int[][] ans = new int[K][2]; int index = 0; for (var pair : tmp) { ans[index][0] = pair.get(0); ans[index][1] = pair.get(1); index++; } return ans; }
private int distance(int x, int y) { return x * x + y * y; }
private int distance(List<Integer> pair) { return distance(pair.get(0), pair.get(1)); } }
|