LeetCode 119 - 杨辉三角形 II
题目描述给定一个非负索引 rowIndex,返回「杨辉三角」的第 rowIndex 行。 在「杨辉三角」中,每个数是它左上方和右上方的数的和。 示例示例 1: 输入: rowIndex = 3 输出: [1,3,3,1] 示例 2: 输入: rowIndex = 0 输出: [1] 示例 3: 输入: rowIndex = 1 输出: [1,1] 提示: 0 <= rowIndex <= 33 解题思路1. 递推解法(空间复杂度 O(k²)) 创建二维数组存储所有行 每个位置的值是上一行相邻两个数的和 边界位置都是1 12345678910111213141516171819202122232425262728293031323334353637#递推解法(空间复杂度O(k^2))class Solution: def getRow(self, rowIndex: int) -> List[int]: C = [[1] * (i + 1) for i in range(rowIndex +...
剑指 Offer 系列题解
C++ 默认函数介绍1. 构造函数12345class A {public: A(); ~A();}; 2. 析构函数1234class A {public: ~A();}; 3. 拷贝构造函数1234class A {public: A(const A& other);}; 4. 赋值运算符重载1234class A {public: A& operator=(const A& other);}; 5. 移动构造函数1234class A {public: A(A&& other);}; 6. 移动赋值运算符重载1234class A {public: A& operator=(A&& other);};
LeetCode 350 - 两个数组的交集
题目描述1. 考虑重复元素的交集给你两个整数数组 nums1 和 nums2,请你以数组形式返回两数组的交集。返回结果中每个元素出现的次数,应与元素在两个数组中都出现的次数一致(取较小值)。 2. 不考虑重复元素的交集给定两个数组,返回它们的交集。输出结果中的每个元素一定是唯一的。 解题思路1. 考虑重复元素(排序 + 双指针)12345678910111213141516def intersect(self, nums1: List[int], nums2: List[int]) -> List[int]: nums1.sort() # 先排序 nums2.sort() i, j = 0, 0 # 双指针 res = [] while i < len(nums1) and j < len(nums2): if nums1[i] == nums2[j]: # 相等时添加到结果 res.append(nums1[i]) i += 1 ...
20250124_深度优先遍历问题
深度优先遍历问题问题描述二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 解题思路 基本概念 二叉树的深度是从根节点到最远叶子节点的路径上的节点数 叶子节点是指没有子节点的节点 空节点的深度为 0 递归思路 一个节点的最大深度 = max(左子树深度, 右子树深度) + 1 递归的终止条件:当节点为空时,返回 0 DFS(深度优先搜索)过程 123456对于每个节点:├── 如果节点为空│ └── 返回 0├── 递归计算左子树的深度├── 递归计算右子树的深度└── 返回 max(左子树深度, 右子树深度) + 1 示例分析 1234567891011121314例如对于树: 3 / \ 9 20 / \ 15 7计算过程:1. 节点3的深度 = max(节点9的深度, 节点20的深度) + 12. 节点9的深度 = max(0, 0) + 1 = 13. 节点20的深度 = max(节点15的深度, 节点7的深度) + 14. 节点15和7的深度都是 15. 所以节点20的深度是 26....
20250124-leetcode2944购买水果需要的最少金币数
给你一个 下标从 1 开始的 整数数组 prices ,其中 prices[i] 表示你购买第 i 个水果需要花费的金币数目。 水果超市有如下促销活动: 如果你花费 prices[i] 购买了下标为 i 的水果,那么你可以免费获得下标范围在 [i + 1, i + i] 的水果。注意 ,即使你 可以 免费获得水果 j ,你仍然可以花费 prices[j] 个金币去购买它以获得它的奖励。 请你返回获得所有水果所需要的 最少 金币数。 示例 1: 输入:prices = [3,1,2] 输出:4 解释: 用 prices[0] = 3 个金币购买第 1 个水果,你可以免费获得第 2 个水果。用 prices[1] = 1 个金币购买第 2 个水果,你可以免费获得第 3 个水果。免费获得第 3 个水果。请注意,即使您可以免费获得第 2 个水果作为购买第 1 个水果的奖励,但您购买它是为了获得其奖励,这是更优化的。 示例 2: 输入:prices = [1,10,1,1] 输出:2 解释: 用 prices[0] = 1 个金币购买第...
20250122-leetcode_168_打家劫舍
题目 解题思路这是一个典型的动态规划问题。对于每个房屋,我们有两种选择: 偷这个房子:那么就不能偷相邻的前一个房子,但可以偷前前一个房子 不偷这个房子:那么最大金额就是偷到前一个房子为止的最大金额 定义状态: dp[i] 表示偷窃前i个房屋能够获得的最大金额 状态转移方程: dp[i] = max(dp[i-1], dp[i-2] + nums[i]) 状态方程表示的两种可能的含义: 当dp[i-1]>dp[i-2]+nums[i] 时,偷dp[i-1] 反之则不偷第i个房子dp[i-1]。偷第i个房子,加上前前个房子 nums[i]+dp[i-2] 边界条件: dp[0] = nums[0]:只有一个房子时 dp[1] = max(nums[0], nums[1]):有两个房子时,选择金额较大的那个 代码实现1234567891011121314151617class Solution: def rob(self, nums: List[int]) -> int: if not nums: ...
LeetCode 746 - 使用最小花费爬楼梯
LeetCode 746 - 使用最小花费爬楼梯题目描述给你一个整数数组 cost ,其中 cost[i] 是从楼梯第 i 个台阶向上爬需要支付的费用。一旦你支付此费用,即可选择向上爬一个或者两个台阶。 你可以选择从下标为 0 或下标为 1 的台阶开始爬楼梯。 请你计算并返回达到楼梯顶部的最低花费。 1. 问题分析这是爬楼梯问题的变体,主要区别是: 每个台阶都有一个花费 可以从索引0或1开始 目标是到达顶部(数组长度位置)的最小花费 2. 解题思路状态定义dp[i] 表示:到达第i个台阶的最小花费 状态转移方程dp[i] = min(dp[i-1], dp[i-2]) + cost[i] 解释:到达第i个台阶可以从: 第i-1个台阶爬1步上来 第i-2个台阶爬2步上来 选择这两种方式中花费较小的一种 代码实现和详细解释1234567891011121314151617181920212223242526272829303132333435363738class Solution: def minCostClimbingStairs(self,...
20250121-leetcode2218
如何便利所有的情况比大小解题思路1. 问题分析这是一个典型的动态规划问题,我们需要: 从n个硬币栈中,每次只能从栈顶取硬币 总共取k次 求取得的硬币面值和的最大值 关键点: 每个栈都是从顶到底排列的 每次只能取栈顶的硬币 必须恰好取k个硬币 2. 动态规划设计状态定义dp[i][j] 表示:从前i个栈中取j个硬币能获得的最大面值和 状态转移对于第i个栈,我们可以: 不从这个栈取硬币:dp[i][j] = dp[i-1][j] 从这个栈取x个硬币:dp[i][j] = dp[i-1][j-x] + (第i个栈顶部x个硬币的和) 最终的状态转移方程:dp[i][j] = max(dp[i-1][j], dp[i-1][j-x] + sum(piles[i]前x个))其中x的范围是:1 ≤ x ≤ min(栈i的大小, j) 初始化 dp[0][0] = 0 其他初始值设为负无穷,表示无法达到 结果最终答案就是dp[n][k],表示从n个栈中取k个硬币的最大面值和 3....
近期思考与感悟
人际关系的处理面对矛盾要及时沟通长期相处的人(如爱人、工作中的领导),不要躲避矛盾,要勇于面对。因为矛盾的产生往往源于双方思想观念的不一致,长期积累会让自己变得很拧巴,可能导致后期更大的矛盾。 沟通技巧保持话题的专注度在吵架和辩论的过程中,当对方发现自己观点有不足时,往往会转移话题到对自己有利的方向。要警惕这种转移,始终保持对核心问题的关注。 表达要全面且有理据想法的提出要全面,并且要有充分的理由支撑自己的选择。记住,每一次发言都是展现自己的机会。 自我管理压力管理不要让压力影响到自己的日常计划和生活节奏。要学会将压力与日常工作生活分开,保持系统正常运转。
20250116-Hexo 搭建
1.本地搭建 hexo 静态博客 安装 hexo 框架: 打开 cmd 运行 $ npm install -g hexo-cli 新建一个文件夹,如 MyBlog ,进入该文件夹内,右击运行 git ,输入: $ hexo init 生成完 hexo 模板,安装 npm ,运行: $ npm install 没错,博客的主体部分到此已经完成了,来看看效果吧。运行: $ hexo server 这时候打开浏览器,输入 localhost:4000 就可以看到博客目前的样子了。小小激动一下,然后按 Ctrl + C 就可以继续下面的操作了。 ## 2 2.hexo 主题选择$ git clone https://github.com/theme-next/hexo-theme-next themes/next 打开根目录下的 _config.yml,修改字段 theme 为: theme: next 3.hexo 与 github 分支 创建一个source 分支,本地部署修改用. 创建master 分支。用来存储静态的网站文件,这些文件都是通过hexo generate...