41 lines
		
	
	
		
			712 B
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			41 lines
		
	
	
		
			712 B
		
	
	
	
		
			Go
		
	
	
	
	
	
package main
 | 
						|
 | 
						|
import "fmt"
 | 
						|
 | 
						|
func main() {
 | 
						|
    var n, m int
 | 
						|
    fmt.Scanf("%d %d", &n, &m)
 | 
						|
    
 | 
						|
    if m == 0 || n == 0 {
 | 
						|
        fmt.Println(0)
 | 
						|
        return
 | 
						|
    }
 | 
						|
 | 
						|
    arr := make([]int, n)
 | 
						|
    result := make([]int, n)
 | 
						|
 | 
						|
    // 输入数组
 | 
						|
    for i := 0; i < n; i++ {
 | 
						|
        fmt.Scan(&arr[i])
 | 
						|
    }
 | 
						|
 | 
						|
    // 计算前缀和 + 滑动窗口
 | 
						|
    result[0] = arr[0]
 | 
						|
    for i := 1; i < n; i++ {
 | 
						|
        if i < m {
 | 
						|
            result[i] = result[i - 1] + arr[i]
 | 
						|
        } else {
 | 
						|
            result[i] = result[i - 1] + arr[i] - arr[i - m]
 | 
						|
        }
 | 
						|
    }
 | 
						|
 | 
						|
    min := result[m - 1]
 | 
						|
    for i := m; i < n; i++ {
 | 
						|
        if result[i] < min {
 | 
						|
            min = result[i]
 | 
						|
        }
 | 
						|
    }
 | 
						|
 | 
						|
    fmt.Printf("%d\n", min)
 | 
						|
}
 |