随想录

代码随想录算法训练营第十七天| 654.最大二叉树 617.合并二叉树 700.二叉搜索树中的搜索 98.验证二叉搜索树

654.最大二叉树 比较简单,直接上代码 1 TreeNode* constructMax_cursor(vector<int>& nums) 2 { 3 if (nums.size() == 0) return NULL; 4 //getMaxNum 5 int index = 0; 6 int ......
随想录 训练营 随想 算法 代码

代码随想录|动态规划

理论基础 509. 斐波那契数 70. 爬楼梯 746. 使用最小花费爬楼梯 62.不同路径 63. 不同路径 II 343. 整数拆分 96.不同的二叉搜索树 动态规划理论基础 动态规划,英文:Dynamic Programming,简称DP,如果某一问题有很多重叠子问题,使用动态规划是最有效的。 ......
随想录 随想 代码 动态

代码随想录|贪心(终章)

435. 无重叠区间 763.划分字母区间 56. 合并区间 738.单调递增的数字 968.监控二叉树 435. 无重叠区间 非常机智的算法 想要找到无重叠区间,想的是找到的是最合适留下来的区间 所以我们将按照区间的后段大小进行排序 将最在前的留下即可 真的非常机智 class Solution: ......
随想录 随想 代码

代码随想录算法训练营第十六天| 找树左下角的值 路径总和 从中序与后序遍历序列构造二叉树

找树左下角的值 1,层序遍历,较为简单: 1 int findBottomLeftValue_simple(TreeNode* root) { 2 int result = 0; 3 if (!root) return result; 4 queue<TreeNode*> selected; 5 s ......
随想录 训练营 总和 序列 随想

代码随想录算法训练营第十五天| 110.平衡二叉树 (优先掌握递归) 257. 二叉树的所有路径 (优先掌握递归) 404.左叶子之和 (优先掌握递归)

110.平衡二叉树 (优先掌握递归) 难点: 要求每个节点的左右字数的高度相减<=1,因此,需要对每个节点都进行检查,难就难在怎么获得任意节点的高度 其中递归是最简单的: 1 int isB_cursor(TreeNode* node, bool &isBalance) 2 { 3 if (isBa ......
随想录 之和 训练营 随想 算法

代码随想录|贪心III

860.柠檬水找零 406.根据身高重建队列 452. 用最少数量的箭引爆气球 860.柠檬水找零 class Solution: def lemonadeChange(self, bills: List[int]) -> bool: n1 = 0 #number of 5 n2 = 0 #numb ......
随想录 随想 代码 III

代码随想录算法训练营第十四天| 104.二叉树的最大深度 (优先掌握递归) 111.二叉树的最小深度 (优先掌握递归) 222.完全二叉树的节点个数(优先掌握递归)

104.二叉树的最大深度 (优先掌握递归) 迭代法,上一篇已经讲过,只需要对每一层+1,这里重要些递归法 递归法注意:如果当前节点为NULL,返回0,不是NULL,那么就是 1+ max(right,left) 代码: 1 void maxD_cursor(TreeNode* node, int& ......
深度 随想录 训练营 节点 随想

代码随想录Day32|贪心II

今日任务 ● 122.买卖股票的最佳时机II ● 55. 跳跃游戏 ● 45.跳跃游戏II ● 1005.K次取反后最大化的数组和 ● 134. 加油站 ● 135. 分发糖果 122.买卖股票的最佳时机 II class Solution: def maxProfit(self, prices: ......
随想录 随想 代码 Day 32

代码随想录算法训练营第43天 | ● 1049. 最后一块石头的重量 II ● 494. 目标和 ● 474.一和零 - 第9章 动态规划part05

第九章 动态规划 part05 ● 1049. 最后一块石头的重量 II ● 494. 目标和 ● 474.一和零 详细布置 1049. 最后一块石头的重量 II 本题就和 昨天的 416. 分割等和子集 很像了,可以尝试先自己思考做一做。 视频讲解:https://www.bilibili.com ......
随想录 训练营 随想 算法 重量

代码随想录算法训练营第十三天| 层序遍历 226.翻转二叉树 (优先掌握递归) 101. 对称二叉树 (优先掌握递归)

层序遍历 注意: 1,使用队列的形式,依次入队,同时对队列进行计数 2,知道数目消失,才进行下一个队列 代码: 1 vector<vector<int>> levelOrder(TreeNode* root) 2 { 3 vector<vector<int>> result; 4 if (root ......
随想录 训练营 随想 算法 代码

代码随想录Day30|贪心1

理论基础 ● 455.分发饼干 ● 376. 摆动序列 ● 53. 最大子序和 什么是贪心 贪心的本质是选择每一阶段的局部最优,从而达到全局最优。 这么说有点抽象,来举一个例子: 例如,有一堆钞票,你可以拿走十张,如果想达到最大的金额,你要怎么拿? 指定每次拿最大的,最终结果就是拿走最大数额的钱。 ......
随想录 随想 代码 Day 30

代码随想录算法训练营第39天 | ● 62.不同路径 ● 63. 不同路径 II - 第9章 动态规划part02

第九章 动态规划part02 ● 62.不同路径 ● 63. 不同路径 II 今天开始逐渐有 dp的感觉了,题目不多,就两个 不同路径,可以好好研究一下 详细布置 62.不同路径 本题大家掌握动态规划的方法就可以。 数论方法 有点非主流,很难想到。 https://programmercarl.co ......
路径 随想录 训练营 随想 算法

代码随想录算法训练营第42天 | ● 01背包问题,你该了解这些! ● 01背包问题,你该了解这些! 滚动数组 ● 416. 分割等和子集 - 第9章 动态规划part04

第九章 动态规划part04 ● 01背包问题,你该了解这些! ● 01背包问题,你该了解这些! 滚动数组 ● 416. 分割等和子集 正式开始背包问题,背包问题还是挺难的,虽然大家可能看了很多背包问题模板代码,感觉挺简单,但基本理解的都不够深入。 如果是直接从来没听过背包问题,可以先看文字讲解慢慢 ......
背包 随想录 子集 问题 训练营

代码随想录算法训练营第37天 | ● 738.单调递增的数字 ● 968.监控二叉树 ● 总结 - 第8章 贪心算法part06

第八章 贪心算法 part06 ● 738.单调递增的数字 ● 968.监控二叉树 ● 总结 详细布置 738.单调递增的数字 https://programmercarl.com/0738.%E5%8D%95%E8%B0%83%E9%80%92%E5%A2%9E%E7%9A%84%E6%95%B0 ......
算法 随想录 训练营 随想 代码

代码随想录算法训练营第38天 | ● 理论基础 ● 509. 斐波那契数 ● 70. 爬楼梯 ● 746. 使用最小花费爬楼梯 - 第9章 动态规划part01

第九章 动态规划part01 ● 理论基础 ● 509. 斐波那契数 ● 70. 爬楼梯 ● 746. 使用最小花费爬楼梯 详细布置 今天正式开始动态规划! 理论基础 无论大家之前对动态规划学到什么程度,一定要先看 我讲的 动态规划理论基础。 如果没做过动态规划的题目,看我讲的理论基础,会有感觉 是 ......
楼梯 随想录 训练营 随想 算法

代码随想录算法训练营第35天 | ● 435. 无重叠区间 ● 763.划分字母区间 ● 56. 合并区间 - 第8章 贪心算法part05

第八章 贪心算法 part05 ● 435. 无重叠区间 ● 763.划分字母区间 ● 56. 合并区间 详细布置 今天的三道题目,都算是 重叠区间 问题,大家可以好好感受一下。 都属于那种看起来好复杂,但一看贪心解法,惊呼:这么巧妙! 还是属于那种,做过了也就会了,没做过就很难想出来。 不过大家把 ......
区间 算法 随想录 训练营 随想

代码随想录算法训练营第十二天| 递归遍历 (必须掌握)迭代遍历 统一迭代

递归遍历 重点: 1,TreeNode的自定义 2,val =0 == val = NULL; 代码: 1 void preRecursor(TreeNode* root, vector<int>& result) 2 { 3 if (root == NULL) 4 return; 5 result ......
随想录 训练营 随想 算法 代码

代码随想录算法训练营第十一天| 239. 滑动窗口最大值 347.前 K 个高频元素

239. 滑动窗口最大值 难点: 1,想好怎么快速找到区块内的最大数值,往常使用的是在遍历一次,但是是O(m*n) 思路: 1,使用单调队列,所有的数值都必须是从大到小, 2,用队列保持必要的顺序,而且对于大于K的循环,每次都要求pop push这两个操作 代码: 1 void pop(deque< ......
随想录 最大值 训练营 随想 算法

代码随想录|回溯算法(终回)

* 491.递增子序列 * 46.全排列 * 47.全排列 II 332.重新安排行程 51. N皇后 37. 解数独 总结 491.递增子序列 注意使用set来判断这一层是否有用过相同的数字,因为这题的数不是order的,所以不能和前者相对比 在python中的set使用add来增加 class ......
随想录 随想 算法 代码

代码随想录算法训练营第十天| 20. 有效的括号 1047. 删除字符串中的所有相邻重复项 150. 逆波兰表达式求值

20. 有效的括号 特点: 左括号之后,可能还会有左括号,但是只要有右括号,那么它必须立刻和最近的左括号 代码: 1 char returnRightChar(char &c) 2 { 3 switch (c) 4 { 5 case '[': return ']'; 6 case '(': retu ......

代码随想录Day24|回溯算法+JAVA大作战

今日任务 39. 组合总和 40.组合总和II 131.分割回文串 93.复原IP地址 78.子集 90.子集II 39. 组合总和 class Solution { List<List<Integer>> ans = new ArrayList<>(); LinkedList<Integer> n ......
随想录 随想 算法 代码 JAVA

代码随想录day08

第四章 字符串part01 344.反转字符串 541. 反转字符串II 剑指Offer 05.替换空格 151.翻转字符串里的单词 剑指Offer58-II.左旋转字符串 344.反转字符串 class Solution { public void reverseString(char[] s) ......
随想录 随想 代码 day 08

代码随想录算法训练营第九天| 232.用栈实现队列 225. 用队列实现栈

232.用栈实现队列 注意: 1,构造函数不需要 2,需要有两个成员变量 in out 代码: 1 class MyQueue { 2 public: 3 stack<int> in; 4 stack<int>out; 5 MyQueue() { 6 7 } 8 9 void push(int x) ......
队列 随想录 训练营 九天 随想

代码随想录Day23|回溯算法

今日任务: 77. 组合 216.组合总和III 17.电话号码的字母组合 什么是回溯法 回溯法也可以叫做回溯搜索法,它是一种搜索的方式。 在二叉树系列中,我们已经不止一次,提到了回溯,例如二叉树:以为使用了递归,其实还隐藏着回溯 (opens new window)。 回溯是递归的副产品,只要有递 ......
随想录 随想 算法 代码 Day

代码随想录算法训练营第八天| 28. 实现 strStr() 459.重复的子字符串

28. 实现 strStr() 难点: 1,制作KMP算法 2,next 数组要求的是,找到的下标:0/ s[i]==s[j]才可以跳出来 代码: 1 vector<int> getNextList(string needle) 2 { 3 vector<int> next(needle.size( ......
随想录 训练营 字符串 随想 算法

代码随想录算法训练营第七天| 344.反转字符串 、 541. 反转字符串II、 剑指Offer 05.替换空格 、 151.翻转字符串里的单词 、 剑指Offer58-II.左旋转字符串

344.反转字符串 代码: 1 void reverseString(vector<char>& s) { 2 3 int i = 0; 4 int j = s.size() - 1; 5 while (i < j) 6 { 7 char mid = s[i]; 8 s[i] = s[j]; 9 s ......
字符串 字符 随想录 左旋 Offer

代码随想录day07

第三章 哈希表part02 454.四数相加II 383. 赎金信 15. 三数之和 18. 四数之和 454.四数相加II 思路:采用分为两组,HashMap 存一组,另一组和 HashMap 进行比对。 首先求出 A 和 B 任意两数之和 sumAB,以 sumAB 为 key,sumAB 出现 ......
随想录 随想 代码 day 07

代码随想录|二叉树总结

涉及到二叉树的构造,无论普通二叉树还是二叉搜索树一定前序,都是先构造中节点。 求普通二叉树的属性,一般是后序,一般要通过递归函数的返回值做计算。 求二叉搜索树的属性,一定是中序了,要不白瞎了有序性了。 ......
随想录 随想 代码

代码随想录|二叉树(最后一章)

530.二叉搜索树的最小绝对差 501.二叉搜索树中的众数 236. 二叉树的最近公共祖先 235. 二叉搜索树的最近公共祖先 701.二叉搜索树中的插入操作 450.删除二叉搜索树中的节点 669. 修剪二叉搜索树 108.将有序数组转换为二叉搜索树 538.把二叉搜索树转换为累加树 总结篇 53 ......
随想录 随想 代码

代码随想录算法训练营第六天| 454.四数相加II 383. 赎金信 15. 三数之和 18. 四数之和

454.四数相加II 1,难点: 1,多个数组之间,会有重复出现的数组,如果单用multiset也是会出错的 2,如果用mutliset,在使用 distance 找出来 equal_range的值的时候,也是会出现奇怪的错误的 2,正确思路 1,把重复出现的节点,次数 存放到map种,然后进行遍历 ......
之和 随想录 训练营 随想 算法