File tree 1 file changed +34
-0
lines changed
1 file changed +34
-0
lines changed Original file line number Diff line number Diff line change @@ -132,3 +132,37 @@ class PriorityQueue {
132
132
}
133
133
}
134
134
}
135
+
136
+ // another
137
+
138
+ /**
139
+ * @param {number[][] } points
140
+ * @param {number } k
141
+ * @return {number[][] }
142
+ */
143
+ const kClosest = function ( points , k ) {
144
+ let len = points . length , l = 0 , r = len - 1
145
+ while ( l <= r ) {
146
+ let mid = helper ( points , l , r )
147
+ if ( mid === k ) break
148
+ if ( mid < k ) l = mid + 1
149
+ else r = mid - 1
150
+ }
151
+ return points . slice ( 0 , k )
152
+
153
+ function helper ( arr , l , r ) {
154
+ const pivot = arr [ l ]
155
+ while ( l < r ) {
156
+ while ( l < r && cmp ( arr [ r ] , pivot ) >= 0 ) r --
157
+ arr [ l ] = arr [ r ]
158
+ while ( l < r && cmp ( arr [ l ] , pivot ) <= 0 ) l ++
159
+ arr [ r ] = arr [ l ]
160
+ }
161
+ arr [ l ] = pivot
162
+ return l
163
+ }
164
+
165
+ function cmp ( a , b ) {
166
+ return a [ 0 ] * a [ 0 ] + a [ 1 ] * a [ 1 ] - b [ 0 ] * b [ 0 ] - b [ 1 ] * b [ 1 ]
167
+ }
168
+ } ;
You can’t perform that action at this time.
0 commit comments