随想

代码随想训练营第五天(Python)| 242.有效的字母异位词、349. 两个数组的交集、第202题. 快乐数、 1. 两数之和

242.有效的字母异位词 1、数组法 这个思路贼 6 ,在这个题的效率也高 class Solution: def isAnagram(self, s: str, t: str) -> bool: # 全部转为 asii 码 如果是互为异为词,则最后的 -+ 后的结果为 0 record = [0] ......
之和 训练营 数组 交集 随想

代码随想录第六天 | 哈希表、242.有效的字母异位词 、349. 两个数组的交集 、202. 快乐数、1. 两数之和

哈希表 什么是哈希表 哈希表是根据关键码的值而直接进行访问的数据结构。 简单的例子:数组 什么时候想到用哈希法 当我们遇到了要快速判断一个元素是否出现集合里的时候,就要考虑哈希法。 哈希碰撞 元素通过哈希函数被映射到同一个索引下标位置 解决方法: 拉链法 从发生冲突的位置拉出一条链表,发生冲突的元素 ......
随想录 之和 数组 交集 随想

代码随想训练营第三天(Python) | 203.移除链表元素、707.设计链表、206.反转链表

一、203.移除链表元素 关键点:如何删除节点,需要知道删除节点前的节点。 1、无虚拟头节点的方法 class Solution: def removeElements(self, head: Optional[ListNode], val: int) -> Optional[ListNode]: ......
训练营 随想 元素 代码 Python

编程随想曲周刊(第50期)

这里记录每周的所见所闻,周日发布。点击阅读原文可以直接访问文章链接。 运维 SNMP介绍及使用,超有用,建议收藏 海康威视认证学习中心 编程 shell命令修改crontab echo "0 0 * * * /opt/clear_tempvideo.sh" >> /var/spool/cron/ro ......
随想曲 随想 周刊

代码随想录算法训练营-动态规划-3-(0-1背包问题)|416. 分割等和子集、1049. 最后一块石头的重量 II

416. 分割等和子集 01背包的递推公式为:dp[j] = max(dp[j], dp[j - weight[i]] + value[i]); 如果dp[j] == j 说明,集合中的子集总和正好可以凑成总和j,理解这一点很重要。 1 class Solution: 2 def canPartit ......
随想录 子集 训练营 随想 算法

代码随想录第二天|977.有序数组的平方 ,209.长度最小的子数组 ,59.螺旋矩阵II

977 有序数组的平方 题目链接:https://leetcode.cn/problems/squares-of-a-sorted-array/ 思路:双指针(实际是三指针),两个找最大值,一个确定平方后的位置。 209.长度最小的子数组 题目链接:https://leetcode.cn/probl ......
数组 随想录 矩阵 螺旋 随想

代码随想录训练营的第二天(Python)| 977.有序数组的平方、209.长度最小的子数组

977.有序数组的平方 暴力求解(O(n+logn)) class Solution: def sortedSquares(self, nums: List[int]) -> List[int]: return sorted(i**2 for i in nums) 双指针(O(n)) 由于列表是单调 ......
数组 随想录 训练营 随想 长度

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

704. 二分查找 链接:https://leetcode.cn/problems/binary-search/description/ 思路:关键是定义清楚区间边界,想清楚middle在计算中是否可能取到左边界or右边界。若采用闭区间,则middle可能等于左/右 边界值。 27. 移除元素 链接 ......
随想录 训练营 随想 算法 元素

代码随想录算法训练营第一天(python) | 704. 二分查找、27. 移除元素。

Leetcode 704 二分查找 题目链接:704 二分查找 关键点思路: 1、是否要进入到 while 部分的代码是 left <= right 还是 left < right, 看 [left, right] 是否是合法区间. 例如 [1, 1] 是合法区间,取<=; [1, 1) 非合法区间 ......
随想录 训练营 随想 算法 元素

随想录Day8|344. 反转字符串、541. 反转字符串Ⅱ、LCR 122. 路径加密、151. 反转字符串里的单词、LCR182. 动态口令

随想录Day8|344. 反转字符串、541. 反转字符串Ⅱ、LCR 122. 路径加密、151. 反转字符串里的单词、LCR182. 动态口令 题目越来越长了…… 344. 反转字符串 文章&视频讲解 编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。 不要给另外 ......
字符串 字符 随想录 口令 随想

代码随想录day21 | ● 530.二叉搜索树的最小绝对差 ● 501.二叉搜索树中的众数 ● 236. 二叉树的最近公共祖先

530. 二叉搜索树的最小绝对差 class Solution { private: int result = INT_MAX; TreeNode* pre = NULL; void traversal(TreeNode* cur){ if (cur == NULL) return; travers ......
随想录 祖先 随想 代码 day

随想录Day7|454. 四数相加Ⅱ、383. 赎金信、15. 三数之和、18. 四数之和

随想录Day7|454. 四数相加Ⅱ、383. 赎金信、15. 三数之和、18. 四数之和 454. 四数相加Ⅱ 文章&视频讲解 给你四个整数数组 nums1、nums2、nums3 和 nums4 ,数组长度都是 n ,请你计算有多少个元组 (i, j, k, l) 能满足: 0 <= i, j, ......
之和 随想录 随想 Day7 Day

随想录Day5|242. 有效的字母异位词、349. 两个数组的交集、202. 快乐数、1. 两数之和

随想录Day5|242. 有效的字母异位词、349. 两个数组的交集、202. 快乐数、1. 两数之和 242. 有效的字母异位词 文章&视频讲解 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。 注意:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互 ......
随想录 之和 数组 交集 随想

代码随想录算法训练营-动态规划-2|62. 不同路径

62. 不同路径 1 class Solution: 2 def uniquePaths(self, m: int, n: int) -> int: 3 # 创建一个二维列表用于存储唯一路径数 4 dp = [[0] * n for _ in range(m)] 5 6 # 设置第一行和第一列的基本 ......
随想录 训练营 随想 算法 路径

随想录Day4|24. 两两交换链表中的节点、19. 删除链表的倒数第N个节点、面试题 02.07. 链表相交、142. 环形链表Ⅱ

随想录Day4|24. 两两交换链表中的节点、19. 删除链表的倒数第N个节点、面试题 02.07. 链表相交、142. 环形链表Ⅱ 24. 两两交换链表中的节点 文章讲解 视频讲解 给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能 ......
节点 随想录 环形 随想 Day4

代码随想录算法训练营-动态规划-1|509. 斐波那契数、70. 爬楼梯

509. 斐波那契数 1 class Solution: 2 def fib(self, n: int) -> int: 3 if n <= 2: 4 return n 5 6 prev1, prev2 = 0, 1 7 for _ in range(2, n+1): 8 sum_value = p ......
随想录 训练营 随想 算法 楼梯

[代码随想录]Day52-单调栈part03

题目:84. 柱状图中最大的矩形 思路: 实现要确定一个核心问题:包含完整一个柱子的最大矩形要找到这根柱子左侧最后一个高于他的柱子以及右侧最后一个高于他的柱子的位置(等同于左侧第一个小于他,右侧第一个小于他,因为+1 -1就是) 只要get到一个点,比如:30 50 70 80 60 70 40 这 ......
随想录 随想 代码 part Day

代码随想录算法训练营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 ......
算法 随想录 队列 训练营 气球