差分数组

 

 差分数组的适用场景是:频繁对原始数组的某个区间的元素进⾏增减。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
//第一步:构建差分数组
func Diff(nums []int)[]int{
    m:=len(nums)
    if m==0{
        return []int{}
    }
    diff:=make([]int,m)
    diff[0]=nums[0]
    for i:=1;i<m;i++{
        diff[i]=nums[i]-nums[i-1]
    }
    return diff
}
 
//第二步:给闭区间[i,j]增加val
func Increment(diff []int,i ,j, val int){
    diff[i]+=val
    if j+1<len(diff){
        diff[j+1]-=val
    }
}
 
//第三步:返回结果数组
func Result(diff []int)[]int{
    if len(diff)==0{
        return []int{}
    }
    res:=make([]int,len(diff))
    res[0]=diff[0]
    for i:=1;i<len(diff);i++{
        res[i]=res[i-1]+diff[i]
    }
    return res
}

  

 

posted @   ☞@_@  阅读(29)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· 单线程的Redis速度为什么快?
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
点击右上角即可分享
微信分享提示