![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与算法
文章平均质量分 67
sai-lingee
这个作者很懒,什么都没留下…
展开
-
树状数组FenwickTree
树状数组 Fenwick Tree/ Binary Indexed Tree Question 1.现在有一个数组,nums = [1, 2, 3, 4, 5, 0];如何计算区间[2,4]的和呢 通常的解决方法 for i in range(2:5): sum+=nums[i] 2.现在还有一个问题,如果数组足够大,且需要更新并不断地计算区间的和,那又该如何解决呢 使用通常的方法如果需要计算n次区间的值就需要m次(区间大小)的相加,时间复杂度是O(n), 显然开销很大 树状数组 树状数原创 2021-07-08 19:42:55 · 110 阅读 · 0 评论 -
堆排序--
堆排序 二叉堆 一颗完全二叉树以数组形式存储,并且每个子节点一定都大于(最大堆)或小于(最小堆)父节点 下图就是一个最小堆(父节点均大于子节点) #mermaid-svg-qPsTQNXVRqePTxpt .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-qPsTQNXVRqePTxpt .label te原创 2021-03-10 15:56:32 · 47 阅读 · 0 评论 -
快速排序
快速排序 1.时间和空间复杂度 时间复杂度 最好的情况(选择元素是需要排序阵列的均值) O(nlog(n)) 最坏情况(选择元素是需要排序阵列的最大或最小值) O(n^2) 平均时间复杂度 O(nlog(n)) 空间复杂度 递归分组元素不小于2 O(nlog(n)) 递归分组元素小于2,退化为冒泡排序 O(nlog(n)) int partition(vector<int>&nums) { } ...原创 2021-03-03 18:18:35 · 96 阅读 · 1 评论 -
[C++]动态规划入门(一) 以LeetCode 198. House Robber为例
在考虑动态规划的时候,可以把问题简化为选和不选的问题,并把问题抛给下一轮的选和不选。小偷入室偷窃就是一类经典的基本动态规划问题—如何在选取一个数而不再取相邻数字相加最大和 有一个目标数组array=[1,2,3,1]; ·如果选择array[0]=1 那么array[1]则不再选取 抛出下一轮选和不选的问题 有一个目标数组array=[3,1]; ·如果不选择array[0] 那么array[1]=2可以选取 抛出下一轮问题 有一个目标数组array=[2,3,1]; 对于目标数组array[3,1..原创 2020-12-06 22:14:30 · 134 阅读 · 0 评论