2 回答

TA貢獻1772條經驗 獲得超5個贊
問題來自 Scan 和 Scanf。它不做任何緩沖,如果你得到大量輸入,它會非常慢。于是我把所有的Scan、Scanf改成了Fscan、Fscanf。相反,我使用了 bufio 包。但是,如果您對即使使用 Fscanf() 的速度也不滿意,您應該認真考慮使用 Scanner。請參見下面的代碼。
package main
import (
"bufio"
"fmt"
"os"
)
func main() {
var n int //numbers
var m int //target sum
var bufin *bufio.Reader = bufio.NewReader(os.Stdin)
fmt.Fscanf(bufin, "%d %d\n", &n, &m)
arr := make([]int, n)
arr = ReadN(arr, n, bufin)
result := checker(arr, n, m)
fmt.Print(bufout, result)
}
func ReadN(arr []int, n int, bufin *bufio.Reader) []int {
for i := 0; i < n; i++ {
fmt.Fscan(bufin, &arr[i])
}
return arr
}
func checker(arr []int, n, m int) int {
var start int
var end int
var sum int
var result int
for start < n {
if sum > m || end == n {
sum -= arr[start]
start++
} else {
sum += arr[end]
end++
}
if sum == m {
result++
}
}
return result
}
- 2 回答
- 0 關注
- 113 瀏覽
添加回答
舉報