10 2022 档案
摘要:##491. 递增子序列 题目|文章 ####思路 这个题中不能对这个序列进行重新排序,因此需要用到set进行去重 ####实现 点击查看代码 class Solution { public: vector<vector<int>> findSubsequences(vector<int>& num
阅读全文
摘要:##93. 复原 IP 地址 题目|文章 ####思路 1.先判断每个部分是不是符合要求 2.如果符合要求则加入path,递归下一层 3.当遍历到字符串末尾,如果有四层,则加入结果,否则直接返回。 ####实现 点击查看代码 class Solution { public: vector<strin
阅读全文
摘要:##39. 组合总和 题目|文章 ####思路 题目的关键点在于无限制重复选取,那么可以不用去重,只要和sum == target 就可以返回。 ####实现 点击查看代码 class Solution { public: vector<vector<int>> combinationSum(vec
阅读全文
摘要:##216. 组合总和 III 题目|文章 ####思路 这道题是一道典型的组合问题,套用回溯模板进行考虑。 考虑参数和返回值。 很明显,返回值为void,参数包括n,k。因为要判断相加之和,需要一个参数sum记录当前组合的总和,此外我们还需要一个参数startIndex来控制回溯。 void ba
阅读全文
摘要:##77. 组合 题目|文章 ####思路:回溯 ####实现 点击查看代码 class Solution { public: vector<vector<int>> combine(int n, int k) { backTracking(n, k, 1); return result; } pr
阅读全文
摘要:##669. 修剪二叉搜索树 题目|文章 ####思路:迭代 1.找到在范围内的第一个节点,设置为根节点 2.对左子树进行遍历,如果左子节点的值小于low,那么将左子节点的右子树作为新的左子节点 3.对右子树进行遍历,如果右子节点的值大于high,那么将右子节点的左子树作为新的右子节点 ####实现
阅读全文
摘要:##235. 二叉搜索树的最近公共祖先 题目|文章 ####思路 在二叉树公共祖先问题中,可以通过后序遍历,从二叉树节点向上遍历,找到最近公共祖先。本题中我们可以利用二叉搜索树的特性对这个问题进行简化。 从根节点向下搜索,我们遇到的第一个在[p,q]之间的节点就是二叉树的最近公共祖先。这个结论第一次
阅读全文
摘要:##530.二叉搜索树的最小绝对差 题目|文章 ####思路 二叉搜索树的特点是按照中序遍历从小到大进行排列,因此,按照中序遍历,逐个比较即可找到最小差值 进行中序遍历,当前节点和前一个节点之间的差值小于最小差值时,对最小差值进行更新。 ####实现 点击查看代码 class Solution {
阅读全文
摘要:##654. 最大二叉树 题目|文章 ###方法:模拟 ####思路 按照题目要求顺序使用递归函数traversal(nums,begin,end)对数组nums二叉树进行模拟。这道题的思路方法与105.从前序遍历和中序遍历中构造二叉树是一致的。 1.确定终止条件,当递归到条件为begin>=end
阅读全文
摘要:##513. 找树左下角的值 题目|文章 ###1.前序遍历 ####思路 题目的要求是先是最底层最左边的节点的值,我们使用前序遍历可以保证是最左边的值,通过深度变化时对节点更新,可以保证是最底层的值。 ####实现 点击查看代码 class Solution { public: int findB
阅读全文
摘要:##104. 二叉树的最大深度 题目|文章 ###1.前序遍历+递归(求深度) ####思路 通过不断传递深度depth来实现回溯。 ####实现 点击查看代码 /** * Definition for a binary tree node. * struct TreeNode { * int va
阅读全文
摘要:##144.二叉树的前序遍历 题目|文章 ###1.递归 ####思路 1.确定参数和返回值 2.确定终止条件 3.确定单层递归的逻辑 ####实现 点击查看代码 /** * Definition for a binary tree node. * struct TreeNode { * int v
阅读全文
摘要:##110. 平衡二叉树 题目|文章 ####思路 比较高度适合用后序遍历,前序遍历时间复杂度高。 ####实现 点击查看代码 class Solution { public: bool isBalanced(TreeNode* root) { return getDepth(root) >= 0;
阅读全文
摘要:##232.用栈实现队列 题目|文章 ###1.使用两个栈(修改输出) ####思路 1.使用两个栈,用一个栈输入数据,用另一个栈输出数据 2.当输出栈为空时,将输入栈的数据转移到输出栈中 ####实现 点击查看代码 class MyQueue { public: MyQueue() { } voi
阅读全文
摘要:##102.二叉树的层序遍历 题目|文章 ###1.迭代 ####思路 1.创建一个队列 2.确定每一层的节点个数,对每一层进行遍历,将结果输出。 ####实现 点击查看代码 class Solution { public: vector<vector<int>> levelOrder(TreeNo
阅读全文
摘要:##344.反转字符串 题目|文章 ####思路 使用双指针进行遍历,需要注意的点是交换的次数i<s.size()/2. 也可以使用swap函数进行交换。 ####实现 点击查看代码 class Solution { public: void reverseString(vector<char>&
阅读全文
摘要:##28.找出字符串中第一个匹配项的下标 题目|文章 ##1.暴力求解 ####思路 对原串的每一个前缀进行搜索,判断是否和模式串相匹配。 ####实现 点击查看代码 class Solution { public: int strStr(string haystack, string needle
阅读全文