solve hw-9
This commit is contained in:
32
hws/tiktok_trends/TopKVideoHolder.cpp
Normal file
32
hws/tiktok_trends/TopKVideoHolder.cpp
Normal file
@@ -0,0 +1,32 @@
|
||||
#include "TopKVideoHolder.h"
|
||||
|
||||
void TopKVideoHolder::add(const VideoInfo& video) {
|
||||
if (pq.size() < K) {
|
||||
pq.push(video);
|
||||
} else {
|
||||
if (VideoCompareWorse()(video, pq.top())) {
|
||||
pq.pop();
|
||||
pq.push(video);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
std::vector<VideoInfo> TopKVideoHolder::getSortedVideos() {
|
||||
std::vector<VideoInfo> sortedVideos;
|
||||
size_t current_size = pq.size();
|
||||
if (current_size == 0) return sortedVideos;
|
||||
|
||||
sortedVideos.reserve(current_size);
|
||||
|
||||
while (!pq.empty()) {
|
||||
sortedVideos.push_back(pq.top());
|
||||
pq.pop();
|
||||
}
|
||||
|
||||
std::sort(sortedVideos.begin(), sortedVideos.end(), VideoInfo::compareForFinalSort);
|
||||
|
||||
return sortedVideos;
|
||||
}
|
||||
|
||||
bool TopKVideoHolder::empty() const { return pq.empty(); }
|
||||
size_t TopKVideoHolder::size() const { return pq.size(); }
|
||||
Reference in New Issue
Block a user