数据结构-树状数组

数据结构-树状数组

树状数组是一种类似于前缀和的数据结构,但是前缀和的修改操作是 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;
}
相关推荐
月落归舟2 分钟前
Lambda + Arrays---小练习
数据结构·算法
SilentSlot5 分钟前
[数据结构]B树的基本定义和操作
数据结构·b树·前端框架
2601_955354465 分钟前
seo臻系统和百度seo有什么区别
算法
誰能久伴不乏9 分钟前
给开发板装上嘴巴与耳朵:i.MX6ULL 裸机串口 (UART) 驱动终极指南
arm开发·c++·单片机·嵌入式硬件·arm
biter down9 分钟前
深入浅出 C++ string 类:从原理到实战
开发语言·c++
君义_noip11 分钟前
信息学奥赛一本通 1487:【例 2】北极通讯网络
算法·图论·信息学奥赛·csp-s
Lhan.zzZ22 分钟前
Qt多线程数据库操作:安全分离连接,彻底解决段错误
数据库·c++·qt·安全
会编程的土豆26 分钟前
【leetcode hot 100】二叉树二叉树
数据结构·算法·leetcode
一直都在57228 分钟前
B树和B+树详解
数据结构·b树
XiYang-DING29 分钟前
【LeetCode】203. 移除链表元素(Remove Linked List Elements)
算法·leetcode·链表