数据结构-树状数组

数据结构-树状数组

树状数组是一种类似于前缀和的数据结构,但是前缀和的修改操作是 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;
}
相关推荐
XW01059992 分钟前
4-11判断素数
前端·python·算法·素数
浅念-22 分钟前
C++ 继承
开发语言·c++·经验分享·笔记·学习·算法·继承
算法备案代理26 分钟前
深度合成算法备案:生成式AI需要备案吗?
人工智能·算法·算法备案
菜鸡儿齐26 分钟前
leetcode-全排列
算法·leetcode·深度优先
Wect30 分钟前
LeetCode 102. 二叉树的层序遍历:图文拆解+代码详解
前端·算法·typescript
不想看见40434 分钟前
Maximal Square 基本动态规划:二维--力扣101算法题解笔记
算法·leetcode·动态规划
Hag_2035 分钟前
LeetCode Hot100 53.最大子数组和
数据结构·算法·leetcode
王老师青少年编程39 分钟前
csp信奥赛C++之反素数
数据结构·c++·数学·算法·csp·信奥赛·反素数
Renhao-Wan43 分钟前
Java 算法实践(七):动态规划
java·算法·动态规划
pursuit_csdn1 小时前
LeetCode 1461. Check If a String Contains All Binary Codes of Size K
算法·leetcode·职场和发展