Skip to content

Commit 9a39d91

Browse files
authored
Updated code as in the video with both solutions
File: 0973-k-closest-points-to-origin.cpp Language: C++ Submission URL: https://leetcode.com/problems/k-closest-points-to-origin/submissions/887663035/
1 parent b76c1fa commit 9a39d91

File tree

1 file changed

+40
-3
lines changed

1 file changed

+40
-3
lines changed

Diff for: cpp/0973-k-closest-points-to-origin.cpp

+40-3
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@
44
55
Quickselect, partition until pivot = k, left side all < k
66
7-
Time: O(n) -> optimized from O(n log k) max heap solution
8-
Space: O(1)
7+
Time: O(k log n)
8+
Space: O(n)
99
*/
1010

1111
// class Solution {
@@ -29,7 +29,7 @@
2929
// return result;
3030
// }
3131
// };
32-
32+
/*
3333
class Solution {
3434
public:
3535
vector<vector<int>> kClosest(vector<vector<int>>& points, int k) {
@@ -72,3 +72,40 @@ class Solution {
7272
return pow(point[0], 2) + pow(point[1], 2);
7373
}
7474
};
75+
*/
76+
77+
/*
78+
// O(n logn) solution using sorting
79+
class Solution {
80+
public:
81+
vector<vector<int>> kClosest(vector<vector<int>>& points, int k) {
82+
vector<vector<int>> res(k);
83+
sort(points.begin(), points.end(), [](vector<int>& p1, vector<int>& p2){
84+
int dist_p1 = pow(p1[0],2) + pow(p1[1],2);
85+
int dist_p2 = pow(p2[0],2) + pow(p2[1],2);
86+
return dist_p1 < dist_p2;
87+
});
88+
copy(points.begin(), points.begin() + k, res.begin());
89+
return res;
90+
}
91+
};
92+
*/
93+
94+
// O(k logn) solution
95+
class Solution {
96+
public:
97+
vector<vector<int>> kClosest(vector<vector<int>>& points, int k) {
98+
vector<vector<int>> triples;
99+
for (auto& p : points)
100+
triples.push_back({p[0] * p[0] + p[1] * p[1], p[0], p[1]});
101+
// Min heap of vectors (triples). This constructor takes O(n) time (n = len(v))
102+
priority_queue<vector<int>, vector<vector<int>>, greater<vector<int>>> pq(triples.begin(), triples.end());
103+
vector<vector<int>> res;
104+
while (k--){
105+
vector<int> el = pq.top();
106+
pq.pop();
107+
res.push_back({el[1], el[2]});
108+
}
109+
return res;
110+
}
111+
};

0 commit comments

Comments
 (0)