LintCode K个最近的点

问题

给定一些 points 和一个 origin,从 points 中找到 k 个离 origin 最近的点。按照距离由小到大返回。如果两个点有相同距离,则按照x值来排序;若x值也相同,就再按照y值排序

  """
  @param: points: a list of points
  @param: origin: a point
  @param: k: An integer
  @return: the k closest points
  """
    def kClosest(self, points, origin, k):
    # if list < knum just return
    if len(points)<=k: return points
    # function to calculate distance between origin and certain point
    def distanceBetween(pin):
      return math.sqrt(math.pow(pin.x-origin.x,2)+math.pow(pin.y-origin.y,2))
    allDis=[]
    for pin in points:
      dis=distanceBetween(pin)
      allDis.append({
        "x":pin.x,
        "y":pin.y,
        "dis":dis
      })
    # sort values according dis,x,y 
    sortValues=sorted(allDis, key=lambda p:(p["dis"],p["x"],p["y"]))
    # reform points
    result=[[dic["x"],dic["y"]] for dic in sortValues]
    print(result)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 首页 资讯 文章 资源 小组 相亲 登录 注册 首页 最新文章 IT 职场 前端 后端 移动端 数据库 运维 其他...
    Helen_Cat阅读 9,342评论 1 10
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,308评论 19 139
  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 14,349评论 0 33
  • SwiftDay011.MySwiftimport UIKitprintln("Hello Swift!")var...
    smile丽语阅读 9,230评论 0 6
  • 文|刘小刘 01. 最近,兰州一直阴沉沉的,连带的人心情也糟糕起来。 早上,刚刚跑完步在拉伸,突然接到一个陌生电话...
    南贝叶阅读 4,262评论 11 18