数据结构-树状数组

数据结构-树状数组

树状数组是一种类似于前缀和的数据结构,但是前缀和的修改操作是 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;
}
相关推荐
leobertlan12 小时前
痛苦系列 | DSP-03 跨越单位圆:Z变换与零极点分析
算法·程序员
蛋蛋的就会顺顺的12 小时前
hot100 p0——栈,贪心算法,动态规划
java·前端·javascript·算法·leetcode·力扣
开发小能手12313 小时前
答案daanC语言
数据结构·算法
Navigator_Z14 小时前
LeetCode //C - 1291. Sequential Digits
c语言·算法·leetcode
WL学习笔记15 小时前
C & C++ 内存管理
c++·c++内存管理
pride.li15 小时前
第03章 Python 教程-基础语法:注释与变量
服务器·前端·后端·python·算法·计算机视觉
旺仔仔仔16 小时前
机器人项目实战(5):从单次抓取,到接收指令连续做事
算法
旺仔仔仔16 小时前
机器人项目实战(2):识别物体、提取点云,再到抓取姿态
算法
姜鱼问生16 小时前
密码明明一样,为什么 GPG 说“错的“?
后端·算法·架构
启观川16 小时前
数据结构与算法-第 3 章 常用算法-贪心算法
数据结构·笔记·python·算法·贪心算法