摘要: 通常双指针用于解决滑动窗口问题(子数组),时间复杂度一般为O(n) 如果输入数组对顺序无要求,可以试着先对输入数组快排,尝试从双指针的角度切入 当然双指针问题不一定非得是两个指针,只是这么叫罢了 例题 Two Sum:给定一个数组,找到两个数其和为X 解: + 先对数组快排,然后一前一后两个指针求和 阅读全文
posted @ 2019-06-20 09:03 qbits 阅读(501) 评论(0) 推荐(0) 编辑
摘要: 只有当 生成的代码合法 且 证明它有意义 时编译器才会为class生成operator= 如上,对于引用和const,编译器拒绝赋值 还有一种情况:某个基类将拷贝赋值函数声明为private,则编译器拒绝为派生类生成拷贝赋值函数,毕竟编译器所生成的拷贝赋值函数想象可以处理基类部分,所以无法在派生类调 阅读全文
posted @ 2019-06-19 23:21 qbits 阅读(126) 评论(0) 推荐(0) 编辑
摘要: 不要混淆 赋值 和 初始化 ,对于大多数类型而言,比起先调用默认构造函数然后调用赋值操作符,只调用一次拷贝构造函数是高效的 对于内置类型,也需要成员初值列(member initialization list)来初始化,对于const和reference,则是必须的 基类先于子类先初始化,class 阅读全文
posted @ 2019-06-19 22:16 qbits 阅读(158) 评论(0) 推荐(0) 编辑
摘要: 导读 作者Scott Meyers在如何有效运用C++方面给出了55个具体的做法,大致分为两类: + 一般性的设计策略,集中于"如何在不同的做法中选择一种完成任务" + 选择inheritance(继承)还是template(模板) + 选择public继承还是private继承 + 选择priva 阅读全文
posted @ 2019-06-17 23:42 qbits 阅读(143) 评论(0) 推荐(0) 编辑
摘要: 特点 假定文本串长度为n, 模式串长度为m, 朴素字符串比较时间复杂度为O(n m),KMP算法时间复杂度为O(n+m) 朴素算法在匹配失败后重新从首部开始匹配,而KMP则利用 模式串 本身的特点,在匹配失败时不用每次都从模式串首部开始匹配, 关键就在于利用模式串的前缀和后缀相同的部分 比如 , 当 阅读全文
posted @ 2019-06-06 18:35 qbits 阅读(133) 评论(0) 推荐(0) 编辑
摘要: 0 1背包 件物品,背包最大容量为 , 第i件物品的费用为 ,价值为 使用 表示在容量为j,在前i件物品中(包括i)选择物品所获得的最大价值 递推方程为 在是否选择第i件物品取最大值 从后往前更新就可以使用一维数组简化 "416. Partition Equal Subset Sum" 完全背包 每 阅读全文
posted @ 2019-06-05 22:38 qbits 阅读(314) 评论(0) 推荐(0) 编辑
摘要: 字符串处理 istringstream 根据空格分隔字符串 string转int int转string 示例如下 c++ include include include using namespace std; int main(){ string s = "a 5 "; istringstream 阅读全文
posted @ 2019-06-05 16:41 qbits 阅读(152) 评论(0) 推荐(0) 编辑
摘要: 这些论文是我在研究区块链共识算法的时候搜到的,当然大多数跟区块链没什么关系,不过有些论文真的写的好,作者中不乏有诺奖得主,有些论文的结果是有违常的(比如拍卖中的价高者得),这也是这些Paper的一部分魅力所在,所选的Paper中或有极其严格的数学推导或非常好的设计,可以参考 博弈论入门 "Thoma 阅读全文
posted @ 2019-06-05 16:38 qbits 阅读(733) 评论(0) 推荐(0) 编辑
摘要: 特点 常用于确定无向图的连通分量(虽然DFS也可以做),求最小公共祖先(LCA) 朴素版并查集 路径压缩 为了减少树的高度,直接将查找路径上的结点连接到根上去,降低查找时间 按秩合并 秩表示结点高度的上界,(算法导论上说路径压缩不会改变每个结点的秩?没想通,难道是指的上界),将秩小的树指向秩大的树称 阅读全文
posted @ 2019-06-04 17:07 qbits 阅读(185) 评论(0) 推荐(0) 编辑
摘要: 特点 树状数组常用于查询前缀和,前缀和通过差分可以得到区间和,并支持单点修改 单点修改和查询前缀和的时间复杂度均为$O(n\log_2 n)$ 数据结构与基本操作 假定有$a_1, a_2, ..., a_n$共n个数,我们使用数组bit[n+1] = {0}, 其中0位置不存储任何信息,仅作为边界 阅读全文
posted @ 2019-06-04 11:44 qbits 阅读(162) 评论(0) 推荐(0) 编辑