持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第11天,点击查看活动详情
- go的Scan读取非常浪费时间,我遇到了超大数组读入,会直接因为读取超时
-
今天做算法题的时候遇到的问题,就是go的输入输出太浪费时间了,比java的Scanner还次,导致的TIMELIMT
-
而且我还做过一个题,同样的代码,用c++写是200ms,用java写是4000ms,用go写是6000ms,就是读取和输出很浪费时间
-
然后我找了一下,可以用文件读入的形式来解决这个问题,就类似于java的快读
-
下面是我用的代码
in := bufio.NewReader(os.Stdio)
var n,m int
fmt.Fscan(in, &n, &k)
arr := make([]int,n)
for i := range n{
fmt.Fsacn(in,&arr[i])
}
- os.Stdio 是控制台输入,使用bufio.NewReader读取
- 处理主要是使用了Fscan方法
func Fscan(r io.Reader, a ...interface{}) (n int, err error)
-
Fsacn是处理文件读取用的
- Fscan从r扫描文本,将成功读取的空白分隔的值保存进成功传递给本函数的参数。换行视为空白。
- 返回成功扫描的条目个数和遇到的任何错误。如果读取的条目比提供的参数少,会返回一个错误报告原因。
-
然后贴上我遇到的滑动窗口算法题链接