Binary Search:658. Find K Closest Elements

来源:互联网 发布:月薪8000能招到java 编辑:程序博客网 时间:2024/06/05 03:28

这道题给我们了一个数组,还有两个变量k和x。让我们找数组中离x最近的k个元素,而且说明了数组是有序的,如果两个数字距离x相等的话,取较小的那个。

第一个方法是,设两个指针,一个指向头,一个指向尾,把与x相差大的那个删掉,如果头尾与x相差一样大,右边的删掉。

class Solution {public:    vector<int> findClosestElements(vector<int>& arr, int k, int x) {        vector<int> res = arr;        while(res.size() > k)        {            int left = 0, right = res.size()-1;            if(x - res[left] <= res[right] - x)                res.pop_back();            else                res.erase(res.begin());        }        return res;    }};


原创粉丝点击