leet-code/src/main/java/leetcode/editor/cn/KClosestPointsToOrigin.java
2021-06-04 21:01:01 +08:00

60 lines
1.7 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//我们有一个由平面上的点组成的列表 points。需要从中找出 K 个距离原点 (0, 0) 最近的点。
//
// (这里,平面上两点之间的距离是欧几里德距离。)
//
// 你可以按任何顺序返回答案。除了点坐标的顺序之外,答案确保是唯一的。
//
//
//
// 示例 1
//
// 输入points = [[1,3],[-2,2]], K = 1
//输出:[[-2,2]]
//解释:
//(1, 3) 和原点之间的距离为 sqrt(10)
//(-2, 2) 和原点之间的距离为 sqrt(8)
//由于 sqrt(8) < sqrt(10)(-2, 2) 离原点更近。
//我们只需要距离原点最近的 K = 1 个点,所以答案就是 [[-2,2]]。
//
//
// 示例 2
//
// 输入points = [[3,3],[5,-1],[-2,4]], K = 2
//输出:[[3,3],[-2,4]]
//(答案 [[-2,4],[3,3]] 也会被接受。)
//
//
//
//
// 提示:
//
//
// 1 <= K <= points.length <= 10000
// -10000 < points[i][0] < 10000
// -10000 < points[i][1] < 10000
//
// Related Topics 堆 排序 分治算法
// 👍 249 👎 0
package leetcode.editor.cn;
import java.util.Arrays;
import java.util.Comparator;
//973:最接近原点的 K 个点
class KClosestPointsToOrigin{
public static void main(String[] args) {
//测试代码
Solution solution = new KClosestPointsToOrigin().new Solution();
}
//力扣代码
//leetcode submit region begin(Prohibit modification and deletion)
class Solution {
public int[][] kClosest(int[][] points, int k) {
Arrays.sort(points, Comparator.comparingInt(point -> (point[0] * point[0] + point[1] * point[1])));
return Arrays.copyOfRange(points, 0, k);
}
}
//leetcode submit region end(Prohibit modification and deletion)
}