分类: 代码随想录算法训练营

52 篇文章

day27 | 回溯part3
39. 组合总和 同一个下标可以被多次选择,dfs 的 for 循环下标从当前开始。 class Solution { public: // 多个 // ==0加入 <0终止 >0继续 // dfs的循环很妙 vector<int> candidates; vector<vector<int>> re…
day25 | 回溯part2
板子是主循环啥也不干,只指明下标,dfs里面两种情况,选或不选。 216. 组合总和 III class Solution { public: vector<vector<int>> res; int n, k; vector<vector<int>> combinationSum3(int k_, …
day24 | 回溯
77. 组合 每个点选或不选 得到第一种写法,效率比较低 class Solution { public: // 1~n 选k个 int n, k; vector<vector<int>> res; vector<bool> b; vector<vector<int>> combine(i…
day23 | 二叉树结尾
669. 修剪二叉搜索树 如果节点的某一边不和条件,返回另一边 class Solution { public: // 如果<val 返回右边的 TreeNode* trimBST(TreeNode* root, int low, int high) { if (root == nullptr) return nullptr; if (roo…
day22 | 二叉树
235. 二叉搜索树的最近公共祖先 和昨天的一题很像,两种做法 1、dfs class Solution { public: // dfs版 TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) { if (root == nullptr || root =…
day21 | 二叉树
530. 二叉搜索树的最小绝对差 就中序遍历算了,简洁易懂 class Solution { public: vector<int> nums; // 比较的时候只用比较连着的 int getMinimumDifference(TreeNode* root) { dfs(root); int minn = nums[1] - nums[…
day17 | 二叉树part4
110平衡二叉树难度最大 剩下的两个就是朴素dfs 110. 平衡二叉树 不和条件返回-1。不然返回最大高度 class Solution { public: // 不和条件了就是-1 bool isBalanced(TreeNode* root) { return getHeight(root, 0) != -1; } int getHeight…
day16 | 二叉树part3
104. 二叉树的最大深度 class Solution { public: int maxn = 0; int maxDepth(TreeNode* root) { dfs(root, 0); return maxn; } void dfs(TreeNode* root, int depth) { if (root == nullptr) { m…