973:最接近原点的 K 个点

This commit is contained in:
huangge1199@hotmail.com 2021-06-04 21:01:01 +08:00
parent b057235fee
commit b5a6347f32
5 changed files with 107 additions and 2 deletions

View 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)
}

View File

@ -0,0 +1,36 @@
<p>我们有一个由平面上的点组成的列表 <code>points</code>。需要从中找出 <code>K</code> 个距离原点 <code>(0, 0)</code> 最近的点。</p>
<p>(这里,平面上两点之间的距离是欧几里德距离。)</p>
<p>你可以按任何顺序返回答案。除了点坐标的顺序之外,答案确保是唯一的。</p>
<p>&nbsp;</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) &lt; 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>&nbsp;</p>
<p><strong>提示:</strong></p>
<ol>
<li><code>1 &lt;= K &lt;= points.length &lt;= 10000</code></li>
<li><code>-10000 &lt; points[i][0] &lt; 10000</code></li>
<li><code>-10000 &lt; points[i][1] &lt; 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>

View File

@ -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