随笔分类 - 数据结构与算法
摘要:目录热身198. 打家劫舍62. 不同路径63. 不同路径 II213. 打家劫舍 II337. 打家劫舍 III 参考:https://cloud.tencent.com/developer/article/1692068 热身 斐波那契数列 递归求解 自顶向下,存在大量的重复计算 动态规划 保存
阅读全文
摘要:组合 77. 组合 - 力扣(LeetCode) 基本回溯 要把问题转换成树的形式,参考代码随想录 (programmercarl.com) 相当于对树进行深度搜索的过程 用path记录到叶节点的路径,所谓叶节点也就是满足k个数的情况,亦即递归函数出口。 path相当于一个栈 当到达叶节点时,pat
阅读全文
摘要:判断二叉树是否轴对称 101. 对称二叉树 - 力扣(LeetCode) 根节点若为null,返回true即可 根节点若不为null,只需判断其左右子树是否为轴对称即可 核心是:给定两个子树根节点r1和r2,判定这两个子树是否为轴对称 r1 r2均为null 必定对称,return true r1
阅读全文
摘要:二叉树遍历 递归遍历 前序 void preOrder(BTree root){ if(root == NULL) return ; visit(root); preOrder(root->left); preOrder(root->right); } 后序 void postOrder(BTree
阅读全文
摘要:KMP算法 参考:如何更好地理解和掌握 KMP 算法? 模式串匹配算法,在一个主串(文本串s)中查找子串(模式串p)第一次匹配的位置 算法两个关键操作 根据模式串建立next数组 根据next数组进行子串匹配 1 Brute-Force算法(暴力求解) 两层for循环,遍历主串,从当前位置出发检查是
阅读全文
摘要:快速排序 平均时间复杂度O(nlogn),最坏时间复杂度O(n^2),时间开销与待排数组初始状态有关,当待排数组有序时,效率最低。 空间复杂度最坏O(n),最好O(logn) int partition(int a[], int low, int high){ int pivot = a[low];
阅读全文
摘要:以听课为主,附带做了课中所有的例题。对基础数据结构,如:线性、非线性数据结构、图论,进行了巩固。对之前自己薄弱的算法思想和代码进行了初次学习,如:动态规划、递归分治、贪心、搜索。下一步需要针对薄弱点、难点进行大量练习。 以下是学习过程中制作的知识点思维导图
阅读全文
摘要:0-1背包 有一堆物品,每个物品都有其重量和价值,现在有一个只能容纳10kg物品的背包,选择装入一些物品,使得背包中的物品价值最大 DPi,j表示前i个物品,装进容量为j的背包所获得的最大价值 w[i]为第i件物品的重量 v[i]为第i件物品的价值 朴素递归 时间复杂度O(2n) #include<
阅读全文
摘要:动态规划 求解优化问题的方法 小心+暴力搜索 子问题+复用 递推求解:求fibonacci数列 朴素递归 时间复杂度O(2n) int Fibonacci1(int n){ int answer; if(n == 0 || n == 1){ answer = n; } else{ answer =
阅读全文
摘要:分治与贪心 分治 贪心策略 step1 分:问题分解 问题分解为多个子问题 step2 治:逐个击破 子问题求局部最优解 step3 合:合并求解 局部最优解进行组合 对于分治,问题分解之后可能还需要继续分解。对于贪心策略,子问题将无需继续分解。 实列 快速排序算法就用到了分治策略 求解Fibona
阅读全文
摘要:求xn 朴素方法 遍历从1到n的所有数然后累乘即可 int simplePower(int x, int n){ int answer = 1; for(int i = 1; i <= n; ++i){ answer *= i; } return answer; } 时间复杂度为O(n) 快速幂 原
阅读全文
摘要:最短路径——Dijkstra算法 转自:https://www.cnblogs.com/fusiwei/p/11390537.html DIJ算法的堆优化 DIJ算法的时间复杂度是O(n2)的,在一些题目中,这个复杂度显然不满足要求。所以我们需要继续探讨DIJ算法的优化方式。 堆优化的原理 堆优化,
阅读全文
摘要:转自:https://www.cnblogs.com/xzxl/p/7232929.html 一、相关定义 最短路径:求源点到某特定点的最短距离 特点:Bellman-Ford算法主要是针对有负权值的图,来判断该图中是否有负权回路或者存在最短路径的点 局限性:算法效率不高,不如SPFA算法 时间复杂
阅读全文