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 }
执行结果如下: