最接近原点的 K 个点
973. 最接近原点的 K 个点
题目描述:
我们有一个由平面上的点组成的列表 points。需要从中找出 K 个距离原点 (0, 0) 最近的点。
(这里,平面上两点之间的距离是欧几里德距离。)
你可以按任何顺序返回答案。除了点坐标的顺序之外,答案确保是唯一的。
让我们回顾一下,如果 A 满足下述条件,那么它是一个山脉数组:
- A.length >= 3
在 0 < i < A.length - 1 条件下,存在 i 使得:
A[0] < A[1] < ... A[i-1] < A[i]
A[i] > A[i+1] > ... > A[A.length - 1]
import numpy as np
class Solution:
def kClosest(self, points: List[List[int]], K: int) -> List[List[int]]:
L = len(points)
D = np.ones(L) * 10000 # points.length <= 10000
index1 = np.empty(L)
out = [[0 for i in range(2)] for i in range(K)]
for i in range(len(points)):
D[i] = points[i][0] ** 2 + points[i][1] ** 2
index1 = np.argsort(D)
for i in range(K):
out[i] = points[index1[i]]
return out
自己的想法:
- 计算出欧式距离,在进行排序并返回下标,对于下标进行去k个值,进行输出
为什么error:
list assignment index out of range:另一种情况是:list是一个空的,没有一个元素,进行list[0]就会出现错误
因为最小点<=points的长度,令D.length = points.length
index[i] = D.index(min(D)) 出错 ,D里面有空,不能比较?
下标,np.argmin 返回的是浮点型的数,进行类型转换
直接输出排序下标:np.argsort
数组大小的问题,对于二维数组掌握不熟练
二维数组赋值为浮点数,要转换为整数 out.astype(int)
np的初始化有问题,会初始化为浮点数,matrix = [[0 for i in range(3)] for i in range(3)] 初始化二维数组
解题思路:
python一行代码 自定义排序
感想:
太慢了,二维数组的问题没有搞明白,以及对于numpy初始化数组的数组类型之前没有详细了解,导致浪费了很多时间。