面试必考的算法与数据结构详解.docx

 5 E币 
成为会员,免费下载资料
文件大小:279.92 KB 上传者:vision 时间:2022-01-05 18:43:54 下载量:19
树状数组,经典树形数据结构之一,代码很短,但其蕴含的算法思想却非常精妙。可以这么说,刷算法题却不懂树状数组,那绝对算是一大遗憾。 树状数组,常用于高效处理「一个数组的更新以及前缀和的求取」。具体来说,其常用于高效求解如下问题: 给定一个长度为 n 的数组 nums,需要支持两类操作: 操作 1: 将 nums 的数值增加 v 操作 2: 求取 nums[1] + nums[2] + ... + nums 的值 对于上述问题,如果我们采用直接的做法,则操作 1 的时间复杂度为 O(1),操作 2 的时间复杂度为 O(n)。假如一共有 q 次操作,则总的时间复杂度为 O(qn)。 而如果使用树状数组来求解,则操作 1 和操作 2 的时间复杂度均为 O(log(n))。假如一共有 q 次操作,则总的时间复杂度为 O(qlog(n))。对比之前的做法,树状数组的解法在时间复杂度上有根本性的优势,而这也正是我们学习该算法的原因。 树状数组 树状数组加快运算的关键,在于对二进制的进一步挖掘,因此我们首先来回忆一下二进制。
展开
折叠
800
评论
共 0 个
内容存在敏感词
    易百纳技术社区暂无数据
相关资料
关于作者
易百纳技术社区
vision
贡献资料 1
易百纳技术社区 我上传的资料
登录查看
我赚取的积分
登录查看
我赚取的收益
登录查看
上传资料 赚取积分兑换E币
易百纳技术社区
删除原因
广告/SPAM
恶意灌水
违规内容
文不对题
重复发帖
置顶时间设置
结束时间
举报反馈

举报类型

  • 内容涉黄/赌/毒
  • 内容侵权/抄袭
  • 政治相关
  • 涉嫌广告
  • 侮辱谩骂
  • 其他

详细说明

审核成功

发布时间设置
发布时间:
是否关联周任务-资料模块

审核失败

失败原因
备注
易百纳技术社区