2021-05-15:数组为{3, 2, 2, 3, 1},查询为(0, 3, 2),意思是在数组里下标0~3这个范围上,有几个2?答案返回2。...假设给你一个数组arr, 对这个数组的查询非常频繁,都给出来。请返回所有查询的结果。
福大大 答案2021-05-15:
遍历存map。map的键是数组中的值,map的值是存数组下标的数组。...比如{3,2,2,3,1},保存到map里就是{3:0,3,2:0,1,1:4},然后用二分法查找某个数的索引范围。
代码用golang编写。...代码如下:
package main
import "fmt"
func main() {
arr := []int{3, 2, 2, 3, 1}
box := NewQueryBox2...(indexArr, L)
// 查询 < R+1 的下标有几个
b := this.countLess(indexArr, R+1)
return b - a
}
// 在有序数组