随笔分类 -  LeetCode刷题笔记

初学数据结构与算法,为面试做准备,但是做过的题第二次遇见还是无从下手,所以尝试开始记录一下解题思路,希望对自己的编程能力能有帮助。
摘要:动态规划——53. 最大子序和 题目: 思路: dp数组的定义:dp[n] 代表在nums[n]时的最大子序和。 base_case:dp[0] = nums[0] 状态转移方程:dp[i] = max(nums[i], dp[i-1]+nums[i]) 设置一个res存储最大自序和。 代码: cl 阅读全文
posted @ 2021-05-13 19:55 Originhhh 阅读(88) 评论(0) 推荐(0)
摘要:动态规划——NC19. 子数组的最大累加和问题 题目: 思路: dp数组的定义:dp[m] 代表在arr[m]时的最大子数组和 base_case: 状态转移方程:化简了,思路就是要么加入之前的,要么另起炉灶。 代码: class Solution { public: /** * max sum o 阅读全文
posted @ 2021-05-06 20:37 Originhhh 阅读(149) 评论(0) 推荐(0)
摘要:动态规划——1312. 让字符串成为回文串的最少插入次数 题目: 思路: dp数组的定义:dp[i] [j] 代表的是字符串s [i, ... , j]成为回文串的最少插入次数 base_case:i == j 时,dp[i] [j] = 0 状态转移方程:咋想的呢就是相等的话,就不变; 不相等的话 阅读全文
posted @ 2021-05-05 15:01 Originhhh 阅读(154) 评论(0) 推荐(0)
摘要:动态规划——72. 编辑距离 题目: 思路: dp数组的定义:dp[i] [j]代表word1[0, ... , i], word2[0, ... , j]的最小编辑距离。 base_case:就是分别考虑i=0的情况 for(int i = 0; i <= m; i++){dp[i][0] = i 阅读全文
posted @ 2021-05-05 11:53 Originhhh 阅读(75) 评论(0) 推荐(0)
摘要:动态规划——516. 最长回文子序列 题目: 思路: dp数组的定义:dp[i] [j]代表在字串s [i , ... , j ] 中,最长回文子序列的长度。 base_case:dp[i] [i] = 1 状态转移方程: if (s[i] == s[j]) // 它俩一定在最长回文子序列中 dp[ 阅读全文
posted @ 2021-05-05 10:38 Originhhh 阅读(62) 评论(0) 推荐(0)
摘要:动态规划——712. 两个字符串的最小ASCII删除和 题目: 思路: 这题还是装换为最长公共子序列问题,然后的这题特殊的是ascii码值. 所以我们的dp数组定义变为:dp[i] [j]代表 str1[0 , ... , i] 和 str2[0 , ... , j] 最长公共子序列的ascii码值 阅读全文
posted @ 2021-05-03 21:25 Originhhh 阅读(120) 评论(0) 推荐(0)
摘要:动态规划——583. 两个字符串的删除操作 题目: 思路: 就是要把问题转换一下,他说是求word1和word2相同所需的最小步数,其实就是求word1和word2分别变为他们的最长公共子序列的最小步数和。然后问题就变为了最长公共子序列问题,继续求解就行了。 代码: class Solution { 阅读全文
posted @ 2021-05-03 20:49 Originhhh 阅读(58) 评论(0) 推荐(0)
摘要:动态规划——1143. 最长公共子序列 题目: 思路: dp数组的定义:二维dp数组,dp[i] [j]代表在text1[0, ... , i-1]和text2[0, ... , j-1]时,两个字符串的最长公共子序列的长度。 base_case:dp[0] [j] = dp[i] [0] =0 状 阅读全文
posted @ 2021-05-03 11:01 Originhhh 阅读(51) 评论(0) 推荐(0)
摘要:动态规划——剑指 Offer 42. 连续子数组的最大和 题目: 思路: dp数组的定义:dp[i]是以 nums[i] 结尾的最大子数组和。 base_case:dp[0] = nums[0] 状态转移方程:dp[i]有两种「选择」,要么与前面的相邻子数组连接,形成一个和更大的子数组;要么不与前面 阅读全文
posted @ 2021-05-03 10:05 Originhhh 阅读(47) 评论(0) 推荐(0)
摘要:二叉搜索树——230. 二叉搜索树中第K小的元素 题目: 思路: 中序遍历+辅助计数,到k了就输出就行。 代码: class Solution { public: // 计数 int n=0; // 存放结果 int res; int kthSmallest(TreeNode* root, int 阅读全文
posted @ 2021-04-25 20:40 Originhhh 阅读(79) 评论(0) 推荐(0)
摘要:二叉树——剑指 Offer 27. 二叉树的镜像 题目: 思路: 中序遍历,其实就是翻转二叉树。 代码: class Solution { public: TreeNode* mirrorTree(TreeNode* root) { if(!root) return NULL; // 前序遍历 中 阅读全文
posted @ 2021-04-25 20:10 Originhhh 阅读(45) 评论(0) 推荐(0)
摘要:二叉树——662. 二叉树最大宽度 题目: 思路: 层序遍历+辅助队列,但是还有些小细节,参考题解后(https://leetcode-cn.com/problems/maximum-width-of-binary-tree/solution/cshuang-bai-de-yan-du-you-xi 阅读全文
posted @ 2021-04-25 20:00 Originhhh 阅读(145) 评论(0) 推荐(0)
摘要:二叉树——113. 路径总和 II 题目: 思路: 前序遍历+回溯 代码参考:https://leetcode-cn.com/problems/path-sum-ii/solution/cqian-xu-bian-li-jia-hui-su-by-qing-feng-seve/ 代码: class 阅读全文
posted @ 2021-04-24 22:56 Originhhh 阅读(88) 评论(0) 推荐(0)
摘要:二叉树——145. 二叉树的后序遍历 题目: 思路: 迭代,顺序是左右中 代码: class Solution { public: vector<int> postorderTraversal(TreeNode* root) { // 放结果 vector<int> res; postorder(r 阅读全文
posted @ 2021-04-24 21:27 Originhhh 阅读(54) 评论(0) 推荐(0)
摘要:二叉树——129. 求根节点到叶节点数字之和 题目: 思路: DFS(深度搜索)+回溯 代码: class Solution { public: int sumNumbers(TreeNode* root) { if (!root) return 0; int res = 0; dfs(root, 阅读全文
posted @ 2021-04-24 20:58 Originhhh 阅读(122) 评论(0) 推荐(0)
摘要:二叉树——958. 二叉树的完全性检验 题目: 思路: 参考了题解,依靠层序遍历。 代码: class Solution { public: bool isCompleteTree(TreeNode* root) { // 辅助栈帮助层序遍历 queue<TreeNode*> q; // 记录是否已 阅读全文
posted @ 2021-04-22 20:34 Originhhh 阅读(95) 评论(0) 推荐(0)
摘要:二叉搜索树——剑指 Offer 36. 二叉搜索树与双向链表 题目: 思路: 二叉搜索树,自然就是中序遍历,然后就是构建双向链表就可以了。构建双向链表部分有点忘记,又看了看才明白。然后就干就好了。 代码: class Solution { public: Node* treeToDoublyList 阅读全文
posted @ 2021-04-22 09:25 Originhhh 阅读(51) 评论(0) 推荐(0)
摘要:二叉搜索树——剑指 Offer 54. 二叉搜索树的第k大节点 题目: 思路: 二叉搜索树,自然想到中序遍历,然后得到一个有序数组,然后就可以解决了。 代码: class Solution { public: vector<int> res; void dfs(TreeNode* node){ if 阅读全文
posted @ 2021-04-19 20:54 Originhhh 阅读(42) 评论(0) 推荐(0)
摘要:二叉树——112. 路径总和 题目: 思路: 就是递归,就是减然后看最后能不能减为0。还是包含着一点回溯的东西在,但是在代码中体现的不是很完全。 代码: class Solution { public: bool hasPathSum(TreeNode* root, int sum) { if (r 阅读全文
posted @ 2021-04-18 20:16 Originhhh 阅读(53) 评论(0) 推荐(0)
摘要:二叉树——101. 对称二叉树 题目: 思路: 此题就是考的细,原理上不难,还是递归,那么遍历顺序是啥,答案就是后序遍历,有人结合代码看可能不理解,觉得这明明是前序遍历啊,先判断节点,再对左右节点进行递归。这是一个误导,还有就是这次写的代码可读性比较差,那么为啥是后序遍历呢,因为他是先递归然后再判断 阅读全文
posted @ 2021-04-18 19:47 Originhhh 阅读(56) 评论(0) 推荐(0)