1. TOPK问题
vector<int> topK(vector<int> input, int k) {
sort(input.begin(), input.end());
vector<int> res;
for (int i = 1; i <= k; i++) res.push_back(input[input.size() - i]);
return res;
}
vector<int> topK(vector<int> input, int k) {
vector<int> res;
for (int i = 0; i < k; i++)
for (int j = 0; j < input.size() - 1 - i; j++)
if (input[j] > input[j + 1]) swap(input[j], input[j + 1]);
for (int i = 1; i <= k; i++) res.push_back(input[input.size() - i]);
return res;
}
vector<int> topK(vector<int> input, int k) {
priority_queue<int, vector<int>, greater<int>> min;
vector<int> res;
for (int i = 0; i < input.size(); i++) {
min.push(input[i]);
if (min.size() > k)min.pop();
}
while (!min.empty()) {
res.push_back(min.top());
min.pop();
}
return res;
}
2. 判断链表是否有环
bool HasCycle(ListNode* head) {
if (!head || !head->next) return false;
ListNode* first = head, * second = first->next;
while (first