1
+ # Runtime: 2003 ms (Top 6.82%) | Memory: 20.5 MB (Top 21.33%)
1
2
2
3
def cal (ele ):
3
4
return ele [0 ]** 2 + ele [1 ]** 2
@@ -13,30 +14,30 @@ def partition(arr,start,end):
13
14
if cal (arr [j ]) <= pivot_dis :
14
15
i += 1
15
16
arr [j ],arr [i ] = arr [i ],arr [j ]
16
-
17
+
17
18
arr [i + 1 ],arr [end ] = arr [end ],arr [i + 1 ]
18
19
return i + 1
19
20
def qSelect (arr ,kth ,start ,end ):
20
21
if start < end :
21
22
pv = partition (arr ,start ,end )
22
- # _______________________
23
- # | Left |ele| Right|
24
- # ------------------------
25
- # pv
23
+ # _______________________
24
+ # | Left |ele| Right|
25
+ # ------------------------
26
+ # pv
26
27
# after partition function call, pv is the index that sacrify:
27
28
# all elements in Left will smaller than ele
28
- # all elements in Right side will greater than ele
29
+ # all elements in Right side will greater than ele
29
30
if pv == kth :#
30
31
return
31
32
if kth < pv :
32
33
return qSelect (arr ,kth ,start ,pv - 1 )
33
34
else :
34
35
return qSelect (arr ,kth ,pv + 1 ,end )
35
- # Space O (logn) because of using recursion
36
+ # Space O (logn) because of using recursion
36
37
# Time: Average case: O(N)
37
- # Worst case: O(N**2)
38
+ # Worst case: O(N**2)
38
39
class Solution :
39
40
def kClosest (self , points , k ):
40
41
# print(points)
41
42
qSelect (points ,k - 1 ,0 ,len (points )- 1 )# kth smallest number will be at (k-1) index in sorted array
42
- return points [:k ]
43
+ return points [:k ]
0 commit comments