糖果屋: 找到糖果最小的下标,然后两边去推每个下标的糖果 package main import "fmt" func main() { n := 0 fmt.Scanln(&n) s := "" fmt.Scanln(&s) cnt := 0 minIdx := 0 minNum := 0 for i := 0; i < n; i++ { if s[i] == '+' { cnt++ } else { cnt-- } if cnt < minNum { minIdx = i minNum = cnt } } fmt.Println(minIdx) ans := 2 cur := 2 if s[minIdx] == '+' { ans = 1 cur = 1 } for i := minIdx; i < n; i++ { if s[i] == '+' { cur++ } else { cur-- } ans += cur } for i := minIdx - 1; i >= 0; i-- { if s[i] == '+' { cur-- } else { cur++ } ans += cur } fmt.Println(ans) } func min(a, b int) int { if a < b { return a } return b } func max(a, b int) int { if a > b { return a } return b }
点赞 评论

相关推荐

投递长鑫存储等公司8个岗位
点赞 评论 收藏
分享
06-11 17:39
门头沟学院 Java
小呆呆的大鼻涕:卧槽,用户彻底怒了
点赞 评论 收藏
分享
牛客网
牛客网在线编程
牛客网题解
牛客企业服务