0
나는이 leetcode question을보고 벡터 (O (nk) 대신 O (nlogk)) 대신 우선 순위 큐를 사용하여 문제를 해결하려고했습니다. 어떻게 이동합니까? 기본 벡터로 priority_queue를 초기 컨테이너로 초기화합니까? 이것은 시도한 것이지만 컴파일되지 않기 때문에 분명히 docs을 오해하고 있습니다.벡터에서 priority_queue를 이동 초기화 하시겠습니까?
struct ListNode {
int val;
ListNode *next;
ListNode(int x) : val(x), next(NULL) {}
};
class cmp{
public:
bool operator()(const ListNode *a,const ListNode *b) const {
if(b==nullptr) return false;
return a==nullptr || a->val>b->val;
}
};
class Solution {
ListNode* helper(auto& lists) {
ListNode *ans=lists.top();lists.pop();
if(ans==nullptr) return nullptr;
lists.push(ans->next);
ans->next=helper(lists);
return ans;
}
public:
ListNode* mergeKLists(vector<ListNode*>& lists) {
if(lists.empty()) return nullptr;
priority_queue<ListNode*,vector<ListNode*>> pq(cmp,std::move(lists)); //compiler says error: 'std::move' is not a type
return helper(pq);
}
};
일반적으로 컴파일되지 않는 코드가있는 경우 컴파일 오류를 게시물에 추가하는 것이 좋습니다. 보너스는 다른 컴파일러 (예 : gcc 및 clang)로 시도하고 두 오류를 게시하는 경우를 가리 킵니다. –