예를 들어 입력 벡터에서 k 번째로 큰 요소를 골라 내고 싶습니다.std :: priority_queue에서 std :: vector로 요소를 복사하는 방법
QuickSelect std :: nth_element를 사용하면 더 잘 수행 할 수 있습니다.
제 질문은이 코딩 문제를 해결하는 대신 std :: priority_queue의 기본 컨테이너 std :: vector를 다른 벡터로 복사하는 방법입니다.
priority_queue<int, vector<int>, greater<int>> pq;
for (int num : nums) {
pq.push(num);
if (pq.size() > k) {
pq.pop();
}
}
내 방법은 바보입니다 :
vector<int> res;
while (!pq.empty()) {
res.push_back(pq.top());
pq.pop();
}
그것을 할 수있는 더 좋은 방법이 있나요?
우리는 최고 K 요소 주문 할 필요가 없습니다
vector<int> res = pq;
처럼 그것을 할 수 있습니다.
'벡터 res = pq;'이것은 주문한 값으로 벡터를 채우려는 의도입니까? –
주문할 필요가 없습니다 –
왜 priority_queue를 사용하고 있습니까? –