题目:
//给定一系列x轴的点坐标,例如 1,3,7,8,9,11这些坐标升序放在数组中,
//现在给一根绳子,长度为4,问绳子最多能覆盖的点数有多少,
//例如绳子放前面只能覆盖两个点,1,3,如果放后面能覆盖4个点。
思路:
假设有序数组为 A, 长度为 length, 使用两个下标 i 和 j。如果A[j]-A[i] <= length, 显然这 j-i+1 个元素能被 长度 length 覆盖。如果 A[j]-A[i] > length,则不能被覆盖。
Golang:
package main
import "fmt"
//给定一系列x轴的点坐标,例如 1,3,7,8,9,11这些坐标升序放在数组中,
//现在给一根绳子,长度为4,问绳子最多能覆盖的点数有多少,
//例如绳子放前面只能覆盖两个点,1,3,如果放后面能覆盖4个点。
func converage(extend int, a []int) int {
num := 0
for i, j := 0, 0; j < len(a); {
if a[j]-a[i] <= extend {
if j-i+1 > num {
num = j - i + 1
}
j++
} else {
i++
}
}
return num
}
func main() {
a := []int{1, 3, 7, 8, 9, 11}
num := converage(4, a)
fmt.Println(num)
}