15天大厂真题带刷 - ZT15小红的区间查询 | Go
小红的区间查询
https://www.nowcoder.com/practice/cbaecf16197a4136b8a593a7a270f4ab
题意
给出一个数组,有2种操作,把第i个位置的数变为x,求前i个位置的数里等于x的数有多少个?
思路
考虑数据范围,n和q都只有200,直接暴力维护就可以。对于操作1,把数组idx-1的值变为x;对于操作2,从0遍历到idx-1,如果当前数等于x,答案加1。是idx-1的原因是数组下标从0开始。扩展:本质是一个单点修改区间查询的问题,如果n,q <=1e5,可以考虑用数据结构维护
Go代码
package main import ( "fmt" ) func main() { var n, q, op, idx, x int fmt.Scan(&n, &q) a := make([]int, n) for i := 0; i < n; i++ { fmt.Scan(&a[i]) } for i := 0; i < q; i++ { fmt.Scan(&op, &idx, &x) idx-- if op == 1 { a[idx] = x } else { var ans int for j := 0; j <= idx; j++ { if a[j] == x { ans++ } } fmt.Println(ans) } } }#牛客创作赏金赛#
15天大厂真题带刷Go题解 文章被收录于专栏
15天大厂真题带刷Golang题解