973:最接近原点的 K 个点
This commit is contained in:
parent
b057235fee
commit
b5a6347f32
60
src/main/java/leetcode/editor/cn/KClosestPointsToOrigin.java
Normal file
60
src/main/java/leetcode/editor/cn/KClosestPointsToOrigin.java
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
//我们有一个由平面上的点组成的列表 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)
|
||||||
|
|
||||||
|
}
|
36
src/main/java/leetcode/editor/cn/KClosestPointsToOrigin.md
Normal file
36
src/main/java/leetcode/editor/cn/KClosestPointsToOrigin.md
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
<p>我们有一个由平面上的点组成的列表 <code>points</code>。需要从中找出 <code>K</code> 个距离原点 <code>(0, 0)</code> 最近的点。</p>
|
||||||
|
|
||||||
|
<p>(这里,平面上两点之间的距离是欧几里德距离。)</p>
|
||||||
|
|
||||||
|
<p>你可以按任何顺序返回答案。除了点坐标的顺序之外,答案确保是唯一的。</p>
|
||||||
|
|
||||||
|
<p> </p>
|
||||||
|
|
||||||
|
<p><strong>示例 1:</strong></p>
|
||||||
|
|
||||||
|
<pre><strong>输入:</strong>points = [[1,3],[-2,2]], K = 1
|
||||||
|
<strong>输出:</strong>[[-2,2]]
|
||||||
|
<strong>解释: </strong>
|
||||||
|
(1, 3) 和原点之间的距离为 sqrt(10),
|
||||||
|
(-2, 2) 和原点之间的距离为 sqrt(8),
|
||||||
|
由于 sqrt(8) < sqrt(10),(-2, 2) 离原点更近。
|
||||||
|
我们只需要距离原点最近的 K = 1 个点,所以答案就是 [[-2,2]]。
|
||||||
|
</pre>
|
||||||
|
|
||||||
|
<p><strong>示例 2:</strong></p>
|
||||||
|
|
||||||
|
<pre><strong>输入:</strong>points = [[3,3],[5,-1],[-2,4]], K = 2
|
||||||
|
<strong>输出:</strong>[[3,3],[-2,4]]
|
||||||
|
(答案 [[-2,4],[3,3]] 也会被接受。)
|
||||||
|
</pre>
|
||||||
|
|
||||||
|
<p> </p>
|
||||||
|
|
||||||
|
<p><strong>提示:</strong></p>
|
||||||
|
|
||||||
|
<ol>
|
||||||
|
<li><code>1 <= K <= points.length <= 10000</code></li>
|
||||||
|
<li><code>-10000 < points[i][0] < 10000</code></li>
|
||||||
|
<li><code>-10000 < points[i][1] < 10000</code></li>
|
||||||
|
</ol>
|
||||||
|
<div><div>Related Topics</div><div><li>堆</li><li>排序</li><li>分治算法</li></div></div>\n<div><li>👍 249</li><li>👎 0</li></div>
|
@ -0,0 +1,9 @@
|
|||||||
|
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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//runtime:34 ms
|
||||||
|
//memory:47.4 MB
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Loading…
Reference in New Issue
Block a user