美文网首页
LintCode K个最近的点

LintCode K个最近的点

作者: 少年Amore | 来源:发表于2017-11-03 18:11 被阅读0次

问题

给定一些 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)

相关文章

  • LintCode K个最近的点

    问题 给定一些 points 和一个 origin,从 points 中找到 k 个离 origin 最近的点。按...

  • LintCode 612. K个最近的点

    原题 解 第一步,万年不变的查错。如果给的array是null或空,直接return 0 只要见到要找k个最x的,...

  • LintCode 612. K个最近的点

    题目描述 给定一些points和一个origin,从points中找到k个离origin最近的点。按照距离由小到大...

  • Remove K Digits

    https://www.lintcode.com/problem/remove-k-digits/description

  • LintCode 5. Kth Largest Element

    原题 LintCode 5. Kth Largest Element Description Find K-th ...

  • 第k大元素

    (lintcode上面的题解)第k大元素:(从小到大的排序)

  • kNN算法/K近邻算法

    深度学习:KNN算法/k近邻算法 算法介绍   即在一个数据集当中寻找其最近的K个点(欧拉距离),由这最近的K个点...

  • LintCode 合并k个排序链表

    题目 合并k个排序链表,并且返回合并后的排序链表。尝试分析和描述其复杂度。 样例给出3个排序链表[2->4->nu...

  • lintCode题解(3)

    标签(空格分隔): lintCode 题目: 统计数字 描述: 计算数字k在0到n中的出现的次数,k可能是0~9的...

  • lintcode k数和

    给定n个不同的正整数,整数k(k < = n)以及一个目标数字。在这n个数里面找出K个数,使得这K个数的和等于目标...

网友评论

      本文标题:LintCode K个最近的点

      本文链接:https://www.haomeiwen.com/subject/mstxmxtx.html