Leetcode
文章平均质量分 77
参宿四
这个作者很懒,什么都没留下…
展开
-
leetcode刷题日志—1.27、1.28
题目1:72. 编辑距离 首先我们可以通过递归解决这道题目,根据最长子序列那道题,可以知道比对两个字符串,可以从最后往前面逐个遍历,如果这两个字符相同,我们就进行skip,继续往前;如果字符不同,我们有三种操作:删除、替换、插入;我们并不知道哪种操作可以为我们节省步数,所以进行分别递归,取三者的最小值;具体分析见下链接:https://labuladong.gitbook.io/algo/dong-tai-gui-hua-xi-lie/zi-xu-lie-lei-xing-wen-ti/bian-j原创 2021-01-29 09:42:05 · 131 阅读 · 0 评论 -
数据结构学习日志——1.24、1.25(动态规划)
回顾一下分治思想,归并排序就是采用的这种思路:https://leetcode-cn.com/problems/maximum-subarray/solution/zui-da-zi-xu-he-by-leetcode-solution/这段话很重要,其实浏览器的搜索方式就是依赖于树结构,快速找到关键词所在的位置和信息。题目1:零钱兑换II这道题的难点在于存在重复的情况,如1 2 1 1和1 1 2 1是属于同一种零钱兑换方式,因此不能简单的将dp[i]写成 dp[i]+=dp[i-coin]原创 2021-01-26 10:09:57 · 84 阅读 · 0 评论 -
数据结构学习日志—1.21、1.22、1.23(动态规划)
动态规划具体来说,动态规划的一般流程就是三步:暴力的递归解法 -> 带备忘录的递归解法 -> 迭代的动态规划解法。就思考流程来说,就分为一下几步:找到状态和选择 -> 明确 dp 数组/函数的定义 -> 寻找状态之间的关系。参考链接1:https://leetcode-solution-leetcode-pp.gitbook.io/leetcode-solution/thinkings/dynamic-programming动态规划的根本目的是避免重复计算参考链接2:原创 2021-01-23 22:25:54 · 113 阅读 · 0 评论 -
数据结构学习日志—1.16
题目1:除法求值这道题的解法有多种,并查法、广度优先搜索、深度优先搜索等采用广度优先搜索BFS进行解决:代码:vector<double> calcEquation(vector<vector<string>>& equations, vector<double>& values, vector<vector<string>>& queries) { //第一步,将a、b等顶点映射到哈原创 2021-01-17 09:41:08 · 110 阅读 · 0 评论 -
Leetcode刷题记录 递归——9.19
递归代码的一般结构int function(level,parm1,param2...){ //递归终结条件 if level>MAX_LEVEL; process_result; return; //处理当前层逻辑 process(level,data..); //下探到下一层 self.function(level+1,p1....); //清理当前层}...原创 2020-09-21 21:03:53 · 154 阅读 · 0 评论 -
树、二叉树
树的结构:二叉树:即子节点只有两个图和树的区别在于,图构成了环**树的结点如何定义:**Class TreeNode{ int val; TreeNode *left; TreeNode *right; TreeNode(int x):val(x),left(NULL),right(NULL) {}}树的本质就是递归,二叉树的遍历可以分为前序、中序和后序三种不同的情况:前序: 根-左-右 中序: 左-根-右 后序:左-右-根二叉搜索树:可以从下图中理解所有节点的含原创 2020-09-04 12:21:18 · 76 阅读 · 0 评论