LeetCode-973 最接近原点的 K 个点

1. 题目

https://leetcode-cn.com/problems/k-closest-points-to-origin/

我们有一个由平面上的点组成的列表 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

2. 我的AC

方法一:排序

class Solution(object):
    def kClosest(self, points, K):
        """
        :type points: List[List[int]]
        :type K: int
        :rtype: List[List[int]]
        """
        points.sort(key = lambda p: p[0]**2 + p[1]**2)
        return points[:K]

复杂度分析

  • 时间复杂度:O(NlogN),其中 N 是给定点的数量
  • 空间复杂度:O(N)

方法二:分治法


3. 小结

  1. 列表排序
new_list = sorted(list, key, reverse) # 升序,不影响list本身结构
list.sort(key, reverse)  # 升序,影响list本身结构
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 首页 资讯 文章 资源 小组 相亲 登录 注册 首页 最新文章 IT 职场 前端 后端 移动端 数据库 运维 其他...
    Helen_Cat阅读 3,931评论 1 10
  • 1 CALayer IOS SDK详解之CALayer(一) http://doc.okbase.net/Hell...
    Kevin_Junbaozi阅读 5,215评论 3 23
  • 时间是最公平无私的 不因为你是谁 就为谁停留 时间是最无情的 不论你是谁 它都是一分一秒的如白驹过隙 且一去不回头...
    最后之最后阅读 216评论 2 6
  • 七月十六,我开始了生活,开始了有大叔的生活。虽然一次还没见过,但是毕竟我们从三千多公里变成了两千多公里,从一道无法...
    swing0314阅读 217评论 0 1
  • (一) 那年杏花微雨,我对着通知单起誓,上了大学我一定勤工俭学,报完名的时候通知单上交了。同时,我发现在大学衣食无...
    摇滚老奶奶阅读 188评论 0 0