class Solution { public: vector<int> so(int l, int r, vector<int>& input) { if (l > r) { vector<int>k; return k; } if (l == r) { vector<int>k; k.push_back(input[l]); return k; } vector<int>le = so(l, (l + r) >> 1, input); vector<int>ri = so(((l + r) >> 1) + 1, r, input); vector<int>ans; int l1 = 0, l2 = 0; while (l1 < le.size() && l2 < ri.size()) { if (le[l1] < ri[l2])ans.push_back(le[l1++]); else ans.push_back(ri[l2++]); } if (l1 < le.size())for (; l1 < le.size(); l1++)ans.push_back(le[l1]); if (l2 < le.size())for (; l2 < ri.size(); l2++)ans.push_back(ri[l2]); return ans; } vector<int> GetLeastNumbers_Solution(vector<int> input, int k) { input = so(0, input.size() - 1, input); vector<int>ans; for (int i = 0; i < k && i < input.size(); i++) ans.push_back(input[i]); return ans; } };