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

福大大 答案2021-05-01:

滑动窗口。窗口只会变大或者不变,不会变小。最后右指针位置减去左指针位置,就是需要返回的长度。

代码用golang编写。代码如下:

package main

import "fmt"

func main() {
    arr := []int{1, 4, 5, 6, 9, 10, 12, 17}
    ret := maxPoint(arr, 4)
    fmt.Println(ret)
}
func maxPoint(arr []int, num int) int {
    arrLen := len(arr)
    L := 0
    R := 0
    for R < arrLen {
        if arr[R]-arr[L] > num {
            L++
        }
        R++
    }
    return R - L
}

执行结果如下:
图片


左神java代码