随想录

代码随想录算法训练营day17 | ● 110.平衡二叉树 ● 257. 二叉树的所有路径 ● 404.左叶子之和

110.平衡二叉树 class Solution { public: int getHeight(TreeNode* node){ if(node == NULL) return 0; int leftHeight = getHeight(node->left); if(leftHeight == ......
随想录 之和 训练营 随想 算法

随想录Day3|203. 移除链表元素、707. 设计链表、206. 反转链表

随想录Day3|203. 移除链表元素、707. 设计链表、206. 反转链表 之后的文章就不放题目链接了,因为真的很推荐Vscode的LeetCode插件,搜一下题号就可以开始code了! 我没怎么用过C++所以也是才开始熟悉它的特性,因为是链表的开始,所以搬运一下卡尔的这一小段代码。 // 单链 ......
随想录 随想 元素 Day3 Day

[代码随想录]Day51-单调栈part02

题目:503. 下一个更大元素 II 思路: 总之就是走两次nums,可以拼接,也可以用下面的取余方式。 代码: func nextGreaterElements(nums []int) []int { lens := len(nums) res := make([]int, lens) for i ......
随想录 随想 代码 part Day

随想录Day2|977. 有序数组的平方、209. 长度最小的子数组、59. 螺旋矩阵Ⅱ

随想录Day2|977. 有序数组的平方、209. 长度最小的子数组、59. 螺旋矩阵Ⅱ 977. 有序数组的平方 LeetCode题目 文章讲解 视频讲解 给定一个按非递减顺序的整数数组nums,返回每个数字的平方组成的新数组,也要按照非递减顺序排序。 1 <= nums.length <= 10 ......
数组 随想录 矩阵 螺旋 随想

代码随想录算法训练营-贪心算法-5|56. 合并区间、738. 单调递增的数字、968. 监控二叉树

56. 合并区间 时间复杂度: O(nlogn) 空间复杂度: O(logn),排序需要的空间开销 1 class Solution: 2 def merge(self, intervals): 3 result = [] 4 if len(intervals) == 0: 5 return res ......
算法 随想录 训练营 区间 随想

[代码随想录]Day50-单调栈part01

题目: 思路: 要寻找任一个元素的右边或者左边第一个比自己大或者小的元素的位置,此时我们就要想到可以用单调栈了 代码: func dailyTemperatures(num []int) []int { res := make([]int, len(num)) stack := []int{} fo ......
随想录 随想 代码 part Day

代码随想录算法训练营day14| ● 二叉树理论基础 ● 递归遍历 ● 迭代遍历 ● 统一迭代

二叉树理论基础 二叉树的种类 满二叉树 | 完美二叉树:没有缺少的结点,叶子结点也全满 完全二叉树:只有最底层结点没满,但必须从左到右连续。(满二叉树是特殊的完全二叉树) 二叉搜索树:左小右大 平衡二叉搜索树: 左右子树的高度差 Δh <= 1 二叉树的存储方式: 链式存储:链表 **顺序存储: * ......
随想录 训练营 随想 算法 理论

代码随想录算法训练营day15 | ● 层序遍历 10 ● 226.翻转二叉树 ● 101.对称二叉树 2

层序遍历 102.二叉树的层序遍历 class Solution { public: vector<vector<int>> levelOrder(TreeNode* root) { vector<vector<int>> result; queue<TreeNode*> que; if(root ......
随想录 训练营 随想 算法 代码

代码随想录算法训练营day16 | ● 104.二叉树的最大深度 559.n叉树的最大深度 ● 111.二叉树的最小深度 ● 222.完全二叉树的节点个数

104.二叉树的最大深度 后序遍历法 class Solution { public: int getdepth(TreeNode* node){ if(node == NULL) return 0; int leftdepth = getdepth(node->left); int rightde ......
深度 随想录 训练营 节点 随想

[代码随想录]Day49-动态规划part17

题目:647. 回文子串 思路: 整体上是两种,就是s[i]与s[j]相等,s[i]与s[j]不相等这两种。 当s[i]与s[j]不相等,那没啥好说的了,dp[i][j]一定是false。 当s[i]与s[j]相等时,这就复杂一些了,有如下三种情况 情况一:下标i 与 j相同,同一个字符例如a,当然 ......
随想录 随想 代码 动态 part

[代码随想录]Day48-动态规划part16

题目:583. 两个字符串的删除操作 思路: 还是最长公共子序列,假设最长公共子序列长度是l;那么需要删除的次数是len(s1) - l + len(s2) - l 代码: func minDistance(word1 string, word2 string) int { lens1 := len ......
随想录 随想 代码 动态 part

代码随想录算法训练营第十一天

代码随想录算法训练营第十一天 | LeetCode 239(滑动窗口最大值) LeetCode 347(前K个高频元素) 239: 滑动窗口最大值 LeetCode 239(滑动窗口最大值) import java.util.Deque; import java.util.LinkedList; c ......
随想录 训练营 随想 算法 代码

代码随想录算法训练营-贪心算法-4|406. 根据身高重建队列、452. 用最少数量的箭引爆气球

406. 根据身高重建队列 1. 一定要想如何确定一个维度,然后再按照另一个维度重新排列。 2. 先确定身高的维度,降序排列。 3. 按照身高排序之后,优先按身高高的people的k来插入,后序插入节点也不会影响前面已经插入的节点,最终按照k的规则完成了队列。 4. 局部最优:优先按身高高的peop ......
算法 随想录 队列 训练营 气球

代码随想录算法训练营day13| ● 239. 滑动窗口最大值 ● 347.前 K 个高频元素 ● 总结

239.滑动窗口最大值 mydemo--(自己思路)--failed 超出时间限制 class Solution { public: vector<int> maxSlidingWindow(vector<int>& nums, int k) { vector<int> result; stack< ......
随想录 最大值 训练营 随想 算法

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

20.有效的括号 卡哥demo class Solution { public: bool isValid(string s) { if(s.size() %2 != 0) return false; stack<char> st; for(int i = 0; i < s.size(); i++) ......

[代码随想录]Day47-动态规划part15

题目:392. 判断子序列 思路: 最长子序列的长度是不是len(s) 代码: func isSubsequence(s string, t string) bool { dp := make([][]int,len(s)+1) for i:=0;i<len(dp);i++{ dp[i] = mak ......
随想录 随想 代码 动态 part

代码随想录算法训练营-回溯算法-3|134. 加油站、135. 分发糖果

134. 加油站 局部最优:当前累加rest[i]的和curSum一旦小于0,起始位置至少要是i+1,因为从i之前开始一定不行。全局最优:找到可以跑一圈的起始位置。 时间复杂度:O(n) 空间复杂度:O(1) 1 class Solution: 2 def canCompleteCircuit(se ......
算法 随想录 训练营 随想 糖果

[8]-代码随想录算法训练营-day9-字符串-part2

代码随想录算法训练营第九天|字符串-part2 1.Leecode 28. 找出字符串中第一个匹配项的下标 题目 https://leetcode.cn/problems/find-the-index-of-the-first-occurrence-in-a-string/ 思路 暴力for循环 刷 ......
随想录 训练营 字符串 随想 算法

[8]-代码随想录算法训练营-day8-KMP算法

代码随想录训练营-KMP算法学习 1.基础概念 前缀 包含首字母,不包含尾字母的所有子串 后缀 包含尾字母,不包含首字母的所有子串 最长相等前后缀 罗列模式串中所有字符串的前后缀 确定最长相等的前后缀 如何找前后缀: 模式串为aabaaf 则其前缀有:a、aa、aab 、aaba、 aabaa 则其 ......
算法 随想录 训练营 随想 day8-KMP

[7]-代码随想录算法训练营-day8-字符串-part1

代码随想录算法训练营第八天|数组字符串-part1 1.Leecode 344. 反转字符串 题目 https://leetcode.cn/problems/reverse-string/ 思路 刷随想录后想法 双指针,用swap 实现困难 无 实现代码 class Solution { publi ......
随想录 训练营 字符串 随想 算法

代码随想录算法训练营-回溯算法-2|55. 跳跃游戏、45. 跳跃游戏 II、1005. K 次取反后最大化的数组和

55. 跳跃游戏 1. 跳跃的覆盖范围。这个问题就转化为跳跃覆盖范围究竟可不可以覆盖到终点! 2. 贪心算法局部最优解:每次取最大跳跃步数(取最大覆盖范围),整体最优解:最后得到整体最大覆盖范围,看是否能到终点。 时间复杂度: O(n) 空间复杂度: O(1) 1 class Solution: 2 ......
算法 随想录 训练营 数组 随想

代码随想录算法训练营第十天

代码随想录算法训练营第十天 | LeetCode 20(有效的括号) LeetCode 1047(删除字符串中的所有相邻重复项) LeetCode 150(逆波兰表达式求值) 20:有效的括号 LeetCode 20(有效的括号) 方法一 import java.util.Stack; class ......
随想录 训练营 随想 算法 代码

【代码随想录算法训练营第3天】704. 二分查找、27. 移除元素

Day1-数组2023.5.20 2023.9.14二刷 Leetcode704 二分查找 给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。 初解 已经不记得二分查找了,遍历找\ ......
随想录 训练营 随想 算法 元素

代码随想录算法训练营-回溯算法|455. 分发饼干、376. 摆动序列

1.贪心算法一般分为如下四步: 将问题分解为若干个子问题 找出适合的贪心策略 求解每一个子问题的最优解 将局部最优解堆叠成全局最优解 455. 分发饼干 1. 局部最优就是大饼干喂给胃口大的,充分利用饼干尺寸喂饱一个,全局最优就是喂饱尽可能多的小孩。 时间复杂度:O(nlogn) 空间复杂度:O(1 ......
算法 随想录 训练营 序列 饼干

[代码随想录]Day46-动态规划part14

题目:1143. 最长公共子序列 思路: 主要就是两大情况: text1[i - 1] 与 text2[j - 1]相同,text1[i - 1] 与 text2[j - 1]不相同 如果text1[i - 1] 与 text2[j - 1]相同,那么找到了一个公共元素,所以dp[i][j] = d ......
随想录 随想 代码 动态 part

代码随想录算法训练营第九天

代码随想录算法训练营第九天 | LeetCode 232(用栈实现队列) LeetCode 225(用队列实现栈) 栈和队列理论基础 定义 栈(stack ),一种遵循先进后出(FILO—First-In/Last-Out)原则的线性存储结构。 队列(queue),一种遵循先进先出(FIFO—fir ......
随想录 训练营 九天 随想 算法

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

栈和队列 232.用栈实现队列 stack: queue: 卡哥代码 一个入栈,一个出栈,即可模拟队列的pop操作 pop之前要检查出栈是否为空 若为空,则排出入栈里所有的元素至出栈中 class MyQueue { public: stack<int> stackIn; stack<int> st ......
队列 随想录 训练营 随想 算法

【代码随想录算法训练营第二天】977.有序数组的平方、209.长度最小的子数组 、59.螺旋矩阵II

Day2-数组2023.9.15 Leetcode977 有序数组的平方 给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。 初解 我还是不能想到暴力解法之外的,对某个问题的最优复杂度也没有概念。就算提示我是用指针,我也想不到思路。 现 ......
数组 随想录 训练营 矩阵 螺旋

[代码随想录]Day45-动态规划part13

题目:300. 最长递增子序列 思路: dp[i]状态 取决于 dp[0] - dp[i-1]中小于dp[i]的元素中最大的值+1,即: for j:=0; j <i; j++ { if nums[i] > nums[j]{ dp[i] = max(dp[i], dp[j] + 1) } } 代码: ......
随想录 随想 代码 动态 part

代码随想录算法训练营第八天

代码随想录算法训练营第八天 | LeetCode 28(实现strStr()) LeetCode 459(重复的子字符串) 28:实现strStr() LeetCode 28(实现strStr()) class Solution { public int strStr(String haystack ......
随想录 训练营 随想 算法 代码