算法: 绳子盖点

给定一个有序数组arr,代表坐落在X轴上的点
给定一个正数K,代表绳子的长度
返回绳子最多压中几个点?即使绳子边缘处盖住点也算盖住

思路:
一根绳子是一个窗口,用绳子的左端盖住第i个点arr[i],看右端能盖住第几个点,得到一个答案,从左到右依次遍历arr,得到所有点的答案,再求最大值即可。

代码:

int maxQuantity(vector<int> & arr, int k) {
    int ans = 0,right = 0;
    for(int i = 0;i < arr.size();i++) {
        while (right < arr.size() && arr[right] - arr[i] <= k) {
            right++;
        }
        ans = max(ans, right - i);
    }
    return  ans;
}