摘要: 树和哈希表结合 不必遍历即可取得树的节点(仅用一个哈希表表示二叉树的所有边,不用建立树结构) 阅读全文
posted @ 2021-12-07 20:27 80k 阅读(32) 评论(0) 推荐(0)
摘要: 摩尔投票法可以解决数组元素数量时间复杂度为 O(n)、空间复杂度为 O(1)的统计问题。 阅读全文
posted @ 2021-12-07 20:27 80k 阅读(24) 评论(0) 推荐(0)
摘要: 注意应用题和三维dp的转化 阅读全文
posted @ 2021-12-07 20:26 80k 阅读(16) 评论(0) 推荐(0)
摘要: 注意应用题向二维dp的转化 阅读全文
posted @ 2021-12-07 20:26 80k 阅读(20) 评论(0) 推荐(0)
摘要: 与494求sum和neg的方法类似注意应用题和dp的数学转化(0-1背包问题)accumulate函数可对vector求和(numeric头文件)accumulate(nums.begin(),nums.end(),init,func) 阅读全文
posted @ 2021-12-07 20:25 80k 阅读(27) 评论(0) 推荐(0)
摘要: 可以利用同样的dp方法 注意题目的转化(加减转化为加法,需要考虑正负号时 只需考虑一边 sum-neg) 阅读全文
posted @ 2021-12-07 20:24 80k 阅读(28) 评论(0) 推荐(0)
摘要: 差分法记录区间变化 防止遍历表示 阅读全文
posted @ 2021-12-07 20:23 80k 阅读(26) 评论(0) 推荐(0)
摘要: 动态规划相比递归的优势是 动态规划可以在每一步保留最优情况 而递归需要计算全部情况,时间复杂度较高(指数) 背包问题的简化仅存储当前的dpmap 写好状态转移关系判断更新顺序dpmap的发展为背包的容量(几个容量就几维) 阅读全文
posted @ 2021-12-07 20:23 80k 阅读(36) 评论(0) 推荐(0)
摘要: mt19937 在头文件<random>中,c++中的伪随机数生成器类型(与rand类似) 使用方法mt19937 gen(seed);//构造gen();生成随机数 uniform_int_distribution在头文件<random>中,均匀分布,是一个随机数分布类,参数为生成随机数的类型(例 阅读全文
posted @ 2021-12-07 20:22 80k 阅读(92) 评论(0) 推荐(0)
摘要: vector的assign()将区间[first,last)的元素赋值到当前的vector容器中,此方法会清除掉容器的旧内容 阅读全文
posted @ 2021-12-07 20:21 80k 阅读(39) 评论(0) 推荐(0)
摘要: 可以用两个优先队列记录数据流及其中位数。通过在两个队列插入数据以及平衡数据,维持队列的top为中位数 阅读全文
posted @ 2021-12-07 20:20 80k 阅读(30) 评论(0) 推荐(0)
摘要: 丑数可以利用多指针记录当前因数指向的丑数位置 min函数对int 和 unsigned_int取最小时,要进行类型转换 阅读全文
posted @ 2021-12-07 20:20 80k 阅读(36) 评论(0) 推荐(0)
摘要: 判断是否可以成为三角形,可以先排序,再两重循环,降低复杂度。 阅读全文
posted @ 2021-12-07 20:19 80k 阅读(28) 评论(0) 推荐(0)
摘要: 三色标记法找图中的环,或拓扑排序思想拆除安全的点 阅读全文
posted @ 2021-12-07 20:19 80k 阅读(29) 评论(0) 推荐(0)
摘要: Dijkstra算法可以利用最小堆进行优化 阅读全文
posted @ 2021-12-07 20:18 80k 阅读(22) 评论(0) 推荐(0)
摘要: is_sorted判断数组是否有序 阅读全文
posted @ 2021-12-07 20:18 80k 阅读(32) 评论(0) 推荐(0)
摘要: vector.back()获取vector最后一个元素。multiset自动排序。tuple元组,tuple是一个固定大小的不同类型值的集合,是泛化的std::pair。std::get<ith>(tuple_obj)可以获取tuple_obj的第ith个值,ith必须在编译期已经给定。 阅读全文
posted @ 2021-12-07 20:17 80k 阅读(35) 评论(0) 推荐(0)
摘要: 通过一次深度优先遍历以及一个unordered_map可以记录每个节点的父节点 c++17,结构化绑定,结构化绑定允许通过对象、结构体的成员来初始化多个变量,结构化绑定声明使用auto来声明多个变量,所有变量都必须用中括号[ ]括起来。在所有情况下,元素或数据成员的数量都必须符合结构化绑定声明中的名 阅读全文
posted @ 2021-12-07 20:16 80k 阅读(35) 评论(0) 推荐(0)
摘要: lambda函数在递归调用时,要写清楚函数的类型,而不能用auto,且需要捕获std::function<void(TreeNode*)> DFS=[&](TreeNode* node){DFS(node->left);DFS(node->right);}; 阅读全文
posted @ 2021-12-07 20:15 80k 阅读(36) 评论(0) 推荐(0)
摘要: 通过定义d[],d[n]表示长度为n+1的数组尾部数字最小值(最小值更容易得到更长的数组),通过不断更新d[],得到最长递增子序列 阅读全文
posted @ 2021-12-07 20:15 80k 阅读(35) 评论(0) 推荐(0)