程式語言 - LeetCode - C++ - 658. Find K Closest Elements



題目:


解答:

class Solution {
public:
    vector<int> findClosestElements(vector<int>& arr, int k, int x) {
        int l = 0;
        int r = arr.size() - k;

        while (l < r) {
            int m = l + ((r - l) >> 1);

            if (x - arr[m] > arr[m + k] - x) {
                l = m + 1;
            }
            else {
                r = m;
            }
        }

        return vector<int>(arr.begin() + l, arr.begin() + l + k);
    }
};