- 博客(19)
- 收藏
- 关注
原创 位操作符的特殊功能
找出那个只出现一次的元素。步骤2: b = a ^ b = 0110 ^ 0011 = 0101(5) ← 原来的a。步骤3: a = a ^ b = 0110 ^ 0101 = 0011(3) ← 原来的b。步骤1: a = a ^ b = 0101 ^ 0011 = 0110(6):任何奇数的二进制表示中,最低位都是1;偶数的二进制表示中,最低位都是0。初始: a = 5(0101), b = 3(0011)使用 n & (n-1) 技巧:清除最低位的1。会清除最低位的1,如果是2的幂,结果就是0。
2025-10-23 19:26:24
256
原创 【LeetCode 300】最长递增子序列
定义dp[i]为:以第 i 个元素 nums[i] 结尾的最长递增子序列的长度子序列的结尾元素是 nums[i]对于后面的元素 nums[j] (j > i),如果 nums[j] > nums[i],就可以接在后面。
2025-10-22 20:17:41
357
原创 【LeetCode 1289】下降路径最小和Ⅱ
定义dp[i][j]为到达第 i 行第 j 列的最小路径和。对于每个位置(i, j),状态转移方程为:dp[i][j] = grid[i][j] + min(dp[i-1][k]),其中 k ≠ j。
2025-10-21 20:10:45
347
原创 【LeetCode 63】不同路径Ⅱ
题号:63链接:63. 不同路径 II - 力扣(LeetCode)难度:中等分类:数组,矩阵,动态规划一个机器人位于 网格的左上角(起始点为 )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(即 )。网格中的障碍物和空位置分别用 和 来表示。机器人不能进入任何有障碍物的方格。要求计算机器人从左上角到右下角的不同路径数量。这是经典「不同路径」问题的变种,增加了障碍物的限制。可以使用动态规划来解决:状态定义: 表示从起点 走到 的不同路径数状态转移:如果 (障碍物):否则:边
2025-10-15 20:27:20
260
原创 【LeetCode 785】判断二分图
如果能将一个图的节点集合分割成两个独立的子集 A 和 B,并使图中的每一条边 的两个节点一个来自 A 集合,一个来自 B 集合,就将这个图称为二分图。二分图的核心特性:图中不存在奇数长度的环。
2025-09-27 14:15:00
1357
原创 【LeetCode 1302】层数最深的叶子节点的和
题号:1302难度:中等分类:二叉树,深度优先搜索,广度优先搜索题目要求我们找到二叉树中最深一层的所有叶子节点,并计算它们的和。关键点:1)只关心最深层的节点2)只累加叶子节点3)可能有多个叶子节点在同一最深层次。
2025-09-26 21:25:42
419
原创 【LeetCode 105】从前序与中序遍历序列构造二叉树
前序左子树: [9] ← 从索引1开始,长度1d。中序左子树: [9] ← 从索引0开始,长度1。中序右子树: [15,20,7] ← 从索引2开始,长度3。前序右子树: [20,15,7] ← 从索引2开始,长度。前序左子树: [15] ← 从索引1开始,长度1。前序右子树: [7] ← 从索引2开始,长度1。中序左子树: [15] ← 从索引0开始,长度1。中序右子树: [7] ← 从索引2开始,长度1。前序遍历: [3, 9, 20, 15, 7]
2025-09-21 11:00:00
656
原创 【LeetCode 739】每日温度(单调栈)
76>75 → 弹出2,answer[2]=6-2=4 → 栈空,索引6入栈 → 栈: [6]i=1: 74>73 → 弹出0,answer[0]=1-0=1 → 栈空,索引1入栈 → 栈: [1]i=2: 75>74 → 弹出1,answer[1]=2-1=1 → 栈空,索引2入栈 → 栈: [2]i=5: 72>69 → 弹出4,answer[4]=5-4=1 → 栈: [2,3]i=6: 76>72 → 弹出5,answer[5]=6-5=1 → 栈: [2]天,下一个更高温度出现在几天后。
2025-09-20 23:43:46
871
原创 【LeetCode 47】全排列II(回溯 + 剪枝)
(2)先排序,排序后相同的数字会相邻,这样我们可以通过比较相邻元素来判断是否重复。(3)剪枝条件:当遇到相同数字且前一个相同数字未被使用时跳过。(2)回溯生成排列:在回溯过程中跳过会导致重复的情况。(1) 去重≠去重元素,而是同一层不能选相同的数。,按任意顺序返回所有不重复的全排列。(1)排序数组:将相同的数字放在一起。给定一个可包含重复数字的序列。分类:回溯,排列,去重。4.代码实现(C语言)
2025-09-13 22:45:00
712
原创 【LeetCode 15】三数之和(排序+双指针)
链接:[https://leetcode.cn/problems/3sum/](https://leetcode.cn/problems/3sum/)若 i > 0 且 nums[i] == nums[i-1] 跳过。sum == 0 :记录结果,双指针同时去重后再收缩。(2) 固定一个数,剩下两个数用“双指针”相向移动。若 nums[i] > 0 结束。(1) 需要去重 → 先排序,再“跳过相同元素”。(1)特判:数组长度 < 3 直接返回空。4. 代码实现(C语言)
2025-09-13 12:59:33
362
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅