数据结构-树状数组

数据结构-树状数组

树状数组是一种类似于前缀和的数据结构,但是前缀和的修改操作是 O(n)的,查询是 O(1) 的 。所以就有了树状数组这个数据结构,它的两种操作被中和了,都是 O(logn) 的。

C++ 复制代码
int nums[N];
//算出最后一位1的位置
int lowbit (int x) 
{    
    return x & -x;
}
//查询前缀和,时间复杂度O(logn)
int ask(int x)
{
    int res=0;
    for(;x;x-=lowbit(x)) res+=nums[x];
    return res;
}
//单点修改,时间复杂度O(logn)
int add(int x,int y)//nums[x]+y
{
    for(;x<=n;x+=lowbit(x)) nums[x]+=y;
}
相关推荐
白子寰7 分钟前
【C++打怪之路Lv14】- “多态“篇
开发语言·c++
yannan201903137 分钟前
【算法】(Python)动态规划
python·算法·动态规划
埃菲尔铁塔_CV算法9 分钟前
人工智能图像算法:开启视觉新时代的钥匙
人工智能·算法
EasyCVR9 分钟前
EHOME视频平台EasyCVR视频融合平台使用OBS进行RTMP推流,WebRTC播放出现抖动、卡顿如何解决?
人工智能·算法·ffmpeg·音视频·webrtc·监控视频接入
linsa_pursuer10 分钟前
快乐数算法
算法·leetcode·职场和发展
小芒果_0111 分钟前
P11229 [CSP-J 2024] 小木棍
c++·算法·信息学奥赛
qq_4340859013 分钟前
Day 52 || 739. 每日温度 、 496.下一个更大元素 I 、503.下一个更大元素II
算法
Beau_Will13 分钟前
ZISUOJ 2024算法基础公选课练习一(2)
算法
XuanRanDev16 分钟前
【每日一题】LeetCode - 三数之和
数据结构·算法·leetcode·1024程序员节
gkdpjj17 分钟前
C++优选算法十 哈希表
c++·算法·散列表