首页 > 编程语言 > 详细

树状数组和线段树

时间:2020-04-24 23:31:39      阅读:101      评论:0      收藏:0      [点我收藏+]

区别:

转载:https://www.cnblogs.com/wpbing/archive/2018/07/26/9370304.html

实现:

树状数组:

转载:https://www.zhihu.com/search?type=content&q=%E6%A0%91%E7%8A%B6%E6%95%B0%E7%BB%84

线段树:

转载:https://leetcode-cn.com/problems/range-sum-query-mutable/

个人理解:

线段树和堆排序的那个有点像

树状数组和2048游戏一样

树状数组两部分:

更新:

void add(int i, int value){
while(i <= N){ 
    c[i] += value; i += lowbit(i); 
    } 
} 

  一步一步把lowbit的1给加没了

计算和:

int sum(int i){ 
    int sum = 0; 
    while(i > 0){
        sum += c[i];
        i -= lowbit(i);
    }
    return sum;
}

  一步一步把lowbit的1给减没了

树状数组和线段树

原文:https://www.cnblogs.com/da-peng/p/12770557.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!