摘要: 首先我们介绍十进制转m进制,使用除m取余法,注意这里所描述的都是整数之间的转换,,不涉及小数部分所谓的乘m取整法 为了便于显示结果,我们这里引入了一个字符串翻转函数 我们使用b数组来存放没一个数对应的字符,不用打表 核心逻辑很简单: 接下来给出10进制转m进制的完整实现: 接下来我们介绍m进制转十进 阅读全文
posted @ 2018-07-13 16:17 静听风吟。 阅读(264) 评论(0) 推荐(0) 编辑
摘要: 直接上干货首先是定义: 这里开了4倍结点大小的,用的时候建议改成3,因为啥呢,我们是根据满二叉树(这里虽然是完全二叉树)的最后一层结点数量来确定整个树的结点数量,如果最后一层的结点数量为n,那么整个树的结点数量是2倍还多,开3还是比较合适的,如果比较极限的话,有必要看一下到底开多少 然后是建树: 我 阅读全文
posted @ 2018-07-13 14:52 静听风吟。 阅读(613) 评论(0) 推荐(0) 编辑
摘要: 树状数组可以修改点查询区间和,其修改和查询都是平衡树级别的 其实它本身就是一颗差不多的树 具体原理这里不再叙述,因为已经忘了。。 下面直接给出相应的函数: 修改点: 查询区间和: 在使用树状数组的时候,一定要注意题目给出的数据范围,千万不要忘记开long long 下面给出完整实现,这篇博文确实太水 阅读全文
posted @ 2018-07-13 14:39 静听风吟。 阅读(897) 评论(5) 推荐(1) 编辑
摘要: 我们一直在讲哈希,哈希,但是真正用这个数据结构的时候往往采用的是它的简化形式 那么如何构造一个真正的哈希表呢? 首先我们明确一下哈希表是干啥用的,没错就是用来判重和查找的 但是这个判重,我们要规定一下限制范围, 虽然哈希表功能强大但是还是有局限性 哈希表适合那种数据特别多,但是对于每一个数据,它的值 阅读全文
posted @ 2018-07-13 14:36 静听风吟。 阅读(1091) 评论(0) 推荐(0) 编辑
摘要: 单调栈和单调队列都是比较废物的 单调栈的栈具有单调性,可以找到从左或者从右遍历第一个比当前元素小或者比当前元素大的元素的位置 首先给出维护单调栈的代码 可以看出这是一个单调递增栈,栈顶元素一定是最小的 我们这里用一个数组来记录每一个元素在向左遍历的时候,第一个比当前元素大的元素额位置 如果这个时候的 阅读全文
posted @ 2018-07-13 14:18 静听风吟。 阅读(317) 评论(0) 推荐(0) 编辑
摘要: 单调队列的作用,归纳成一句话就是不断读入元素,不时去掉元素,随时查询最值 应用的话就比较高级了,除了滑动窗口这个题目,还有动态规划的效率优化,当然还有别的以后再整理 单调队列由于要不断从两端进行队列操作,所以采用双端队列来实现 在此例中,所有的数据都是放在a数组中的,我们用一个p来表示a数组中某一个 阅读全文
posted @ 2018-07-13 14:01 静听风吟。 阅读(376) 评论(0) 推荐(1) 编辑
摘要: 差分数组不仅仅是一个优秀的数据结构,还是一种很好的思想 差分数组的功能是修改区间,查询点 修改区间的时间复杂度是O(1),查询点的时间复杂度为O(n) 我们这里要根据数据范围灵活选取方法,不要拘泥于差分数组 以上是修改区间操作,x位置加上修改量,y+1位置减去修改量,这样整个区间的元素就相当于修改了 阅读全文
posted @ 2018-07-13 13:47 静听风吟。 阅读(1515) 评论(1) 推荐(0) 编辑
摘要: 在并查集的基础上,对其中的每一个元素赋有某些值。在对并查集进行路径压缩和合并操作时,这些权值具有一定属性 即可将他们与父节点的关系,变化为与所在树的根结点关系 本题是Bailian上的一道题,下文描述的a数组就是所谓的权,它记录了这个结点与父结点的关系 然后通过在find和union时进行特殊的处理 阅读全文
posted @ 2018-07-13 13:44 静听风吟。 阅读(251) 评论(0) 推荐(0) 编辑
摘要: 给定n个元素,我们要把属于同类的元素归并,并且要查找这个元素属于哪一类 并查集常常用来处理不相交集合的合并和查询问题 我们先给出并查集需要记住的唯一一个东西,带路径压缩的找爹函数 然后给出一个归并操作,很容易看明白 如果爹不一样就让这两棵树的所有儿子全连在一个祖先上,可持久化时并不支持此操作 另外, 阅读全文
posted @ 2018-07-13 13:37 静听风吟。 阅读(186) 评论(0) 推荐(0) 编辑
摘要: 1、二叉堆 二叉堆是一颗完全二叉树,并且满足其某个结点的值总是不大于或者是不小于其父节点的值 根元素比较大的叫大根堆,反之则叫小根堆 建堆的时间复杂度为O(n) 在堆中插入删除并调整堆的时间复杂度都是O(log(n))的,因此相比于优先队列,有应用的必要 一般的二叉堆支持的操作有插入任意值并调整堆, 阅读全文
posted @ 2018-07-13 13:27 静听风吟。 阅读(670) 评论(0) 推荐(0) 编辑