题解 | #训练营合影#折磨~

分发糖果

https://ac.nowcoder.com/acm/contest/33183/A

package main

import (
	"bufio"
	"fmt"
	"os"
	"strconv"
	"strings"
)

func main() {
	s := bufio.NewScanner(os.Stdin)
	input := []string{}
	for s.Scan() {
		input = append(input, s.Text())
		if len(input) > 3 {
			ii, _ := strconv.Atoi(input[3])
			if len(input)-4 == ii {
				break
			}
		}

	}

	likeColor := make(map[int]int)
	s3 := strings.Split(input[1], " ")
	for _, v := range s3 {
		color, _ := strconv.Atoi(v)
		likeColor[color] += 1 // 喜欢该颜色的人数
	}

	pictureColors := make(map[int]int)
	s4 := strings.Split(input[2], " ")

	for k, v := range s4 {
		color, _ := strconv.Atoi(v)
		pictureColors[k+1] = color
	}

	var queryNum int
	queryNum, _ = strconv.Atoi(input[3])

	for i := 0; i < queryNum; i++ {
		var l, r int

		s5 := strings.Split(input[4+i], " ")
		l, _ = strconv.Atoi(s5[0])
		r, _ = strconv.Atoi(s5[1])

		queryColors := make(map[int]int)
		for i := l; i <= r; i++ {
			queryColors[pictureColors[i]] += 1
		}
		ret := 0
		for k, _ := range queryColors {
			ret += likeColor[k]
		}
		fmt.Println(ret)

	}

}

用例通过率为 15.38%
运行时间
7ms
占用内存
1128KB
实在不知道什么样的示例会有下面的报错!

程序异常退出,请检查是否存在语法错误或者数组越界非法访问等情况
panic: runtime error: index out of range [1] with length 1
goroutine 1 [running]:
main.main()
/tmp/main.go:26 +0x8b4

求助:话说golang有没有更好的读取终端输入的方法???意思是何时判断终端输入完毕数据了,这里我粗暴的由询问次数确定了一个输入完毕的点。

全部评论
有无大佬改下这个代码,想了很久也想不出什么样的示例导致的我数组越界?
点赞
送花
回复
分享
发布于 2022-05-02 22:35

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务