- 博客(264)
- 收藏
- 关注
原创 Leetcode 1705-吃苹果的最大数目
有一棵特殊的苹果树,一连 n 天,每天都可以长出若干个苹果。在第 i 天,树上会长出 apples[i] 个苹果,这些苹果将会在 days[i] 天后(也就是说,第 i + days[i] 天时)腐烂,变得无法食用。也可能有那么几天,树上不会长出新的苹果,此时用 apples[i] == 0 且 days[i] == 0 表示。你打算每天 最多 吃一个苹果来保证营养均衡。注意,你可以在这 n 天之后继续吃苹果。给你两个长度为 n 的整数数组 days 和 apples ,返回你可以吃掉的苹果的最大数目。
2025-03-13 13:52:36
376
原创 Leetcode 376-摆动序列
dp[i][0]:以i为结尾的序列中,i作为波峰的最大长度值dp[i][1]:以i为结尾的序列中,i作为波谷的最大长度值。
2025-03-13 13:11:56
402
原创 Leetcode 698-划分为k个相等的子集
给定一个整数数组 nums 和一个正整数 k,找出是否有可能把这个数组分成 k 个非空子集,其总和都相等。示例 1:输入: nums = [4, 3, 2, 3, 5, 2, 1], k = 4输出: True说明: 有可能将其分成 4 个子集(5),(1,4),(2,3),(2,3)等于总和。示例 2:输入: nums = [1,2,3,4], k = 3输出: false提示:每个元素的频率在 [1,4] 范围内。
2025-03-12 19:03:19
547
原创 Leetcode 95-不同的二叉搜索树 II
枚举 [start,end] 中的值 i 为当前二叉搜索树的根,那么序列划分为了 [start,i−1] 和 [i+1,end] 两部分。递归调用这两部分,即 dfs(start, i - 1) 和 dfs(i + 1, end),递归的入口即为 dfs(1, n).递归终止:当 start>end 的时候,当前二叉搜索树为空,返回空节点即可。枚举[start,end]中可行根节点i:向下递归:递归获得所有可行的左子树(dfs(start,i-1))和可行的右子树(dfs(i+1,end))
2025-03-12 12:59:20
794
原创 Leetcode 264-丑数/LCR 168/剑指 Offer 49
我们把只包含质因子 2、3 和 5 的数称作丑数(Ugly Number)。求按从小到大的顺序的第 n 个丑数。1 是丑数。n 不超过1690。
2025-03-06 19:35:51
389
原创 Leetcode 378-有序矩阵中第 K 小的元素
因为每次值域收缩都保证了第 k 小的数在 left ~ right 之间,当 left==right 时,第 k 小的数即被找出,等于left//left和right是矩阵值不是矩阵下标//一步步收缩值域范围直至left==right//因为每次值域收缩都保证了第 k 小的数在 left ~ right 之间,当 left==right 时,第 k 小的数即被找出,等于left//避免溢出//满足 num >= k,范围太大,移动right至mid, 范围收缩。
2025-03-05 19:02:55
622
原创 Leetcode 57-插入区间
给你一个 无重叠的 ,按照区间起始端点排序的区间列表 intervals,其中 intervals[i] = [starti, endi] 表示第 i 个区间的开始和结束,并且 intervals 按照 starti 升序排列。同样给定一个区间 newInterval = [start, end] 表示另一个区间的开始和结束。在 intervals 中插入区间 newInterval,使得 intervals 依然按照 starti 升序排列,且区间之间不重叠(如果有必要的话,可以合并区间)。
2025-03-03 20:08:25
614
原创 Leetcode 437- 路径总和 III
给定一个二叉树的根节点 root ,和一个整数 targetSum ,求该二叉树里节点值之和等于 targetSum 的 路径 的数目。路径 不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点)。
2025-02-20 11:01:51
246
转载 Leetcode 153-寻找旋转排序数组中的最小值
一、如果 x>nums[n−1],那么可以推出以下结论:nums 一定被分成左右两个递增段;(因为如果没有旋转的话,x必小于nums[n-1])第一段的所有元素均大于第二段的所有元素;x在第一段(x如果在第二段必小于nums[n-1])最小值在第二段开头第一个元素所以x一定在最小值的左边–>通过left=x-1收缩区间二、如果 x≤nums[n−1],那么 x 一定在第二段。(或者 nums 就是递增数组,此时只有一段。x 要么是最小值,要么在最小值右边。通过。
2025-02-19 13:10:46
27
转载 Leetcode 435-无重叠区间
给定一个区间的集合 intervals ,其中 intervals[i] = [starti, endi]。返回 需要移除区间的最小数量,使剩余区间互不重叠。注意 只在一点上接触的区间是 不重叠的。例如 [1, 2] 和 [2, 3] 是不重叠的。
2025-02-18 10:39:53
30
原创 Leetcode 424-替换后的最长重复字符
给你一个字符串 s 和一个整数 k。你可以选择字符串中的任一字符,并将其更改为任何其他大写英文字符。该操作最多可执行 k 次。在执行上述操作后,返回 包含相同字母的最长子字符串的长度。
2025-02-17 19:07:53
415
原创 Leetcode 221-最大正方形
在一个由 ‘0’ 和 ‘1’ 组成的二维矩阵内,找到只包含 ‘1’ 的最大正方形,并返回其面积。提示:matrix[i][j] 为 ‘0’ 或 ‘1’
2025-02-14 13:42:04
676
原创 Leetcode 143-重排链表
1.L0,L1,L2…和 Ln,Ln-1,Ln-2…2.Ln,Ln-1,Ln-2是原先链表的倒序。1.找到链表中点并断开。2.将后半段链表逆序。3.将两链表穿插合并。
2025-02-12 18:24:11
254
原创 Leetcode 295-数据流的中位数
现在 left 比 right 少 1 个数,不符合前文的规定,所以必须把 right 的最小值从 right 中去掉,添加到 left 中。比如现在有 6 个数:1,5,6,2,3,4,要计算中位数,可以把这 6 个数从小到大排序,得到 1,2,3,4,5,6,中间 3 和 4 的平均值 3.5 就是中位数。这两种情况可以合并:无论 num 是大是小,都可以先把 num 加到 right 中,然后把 right 的最小值从 right 中去掉,并添加到 left 中。
2025-02-12 13:41:51
603
转载 Leetcode 75-颜色分类
给定一个包含红色、白色和蓝色、共 n 个元素的数组 nums ,原地 对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。必须在不使用库内置的 sort 函数的情况下解决这个问题。
2025-02-11 18:55:35
32
转载 Leetcode 238-除自身以外数组的乘积
answer[i] 等于 nums 中除了 nums[i] 之外其余各元素的乘积。换句话说,如果知道了 i 左边所有数的乘积,以及 i 右边所有数的乘积,就可以算出 answer[i]。2.定义 suf[i] 表示从 nums[i+1] 到 nums[n−1] 的乘积。n-1到0倒序遍历计算suf[i]1.定义 pre[i] 表示从 nums[0] 到 nums[i−1] 的乘积。0到n-1顺序遍历计算pre[i]顺便计算answer[i]=pre[i]*suf[i]
2025-02-11 18:45:16
30
原创 Leetcode 152-乘积最大子数组
给你一个整数数组 nums ,请你找出数组中乘积最大的连续子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。
2025-02-10 19:51:34
276
原创 Leetcode 2-两数相加
给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0 开头。提示:每个链表中的节点数在范围 [1, 100] 内题目数据保证列表表示的数字不含前导零。
2025-02-08 14:56:35
260
原创 Leetcode 10-正则表达式匹配/ 剑指 Offer 19. 正则表达式匹配
给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 ‘.’ 和 ‘*’ 的正则表达式匹配。‘.’ 匹配任意单个字符‘*’ 匹配零个或多个前面的那一个元素所谓匹配,是要涵盖 整个 字符串 s 的,而不是部分字符串。
2024-12-30 19:37:05
503
原创 Leetcode 283-移动零
给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。请注意 ,必须在不复制数组的情况下原地对数组进行操作。
2024-12-27 16:22:00
389
转载 Leetcode 312-戳气球
对于任一 dp[i][j],我们希望所有 dp[i][k] 和 dp[k][j] 已经被计算,画在图上就是这种情况:dp[0][n+1]//添加两侧的虚拟气球,便于处理i <= n;i++) {// 开始状态转移// i 应该从下往上i>=0;i--){j<n+2;j++){k<j;k++){//注意不是points[k-1]*points[k]*points[k+1]//对应nums[0]到nums[n-1]戳气球获得的最大值。
2024-12-25 20:08:24
57
转载 Leetcode 581-最短无序连续子数组
给你一个整数数组 nums ,你需要找出一个 连续子数组 ,如果对这个子数组进行升序排序,那么整个数组都会变为升序排序。请你找出符合题意的 最短 子数组,并输出它的长度。
2024-12-25 17:43:49
48
原创 Leetcode 394-字符串解码
给定一个经过编码的字符串,返回它解码后的字符串。编码规则为: k[encoded_string],表示其中方括号内部的 encoded_string 正好重复 k 次。注意 k 保证为正整数。你可以认为输入字符串总是有效的;输入字符串中没有额外的空格,且输入的方括号总是符合格式要求的。此外,你可以认为原始数据不包含数字,所有的数字只表示重复的次数 k ,例如不会出现像 3a 或 2[4] 的输入。
2024-12-25 16:12:31
356
原创 Leetcode 841-钥匙和房间
有 n 个房间,房间按从 0 到 n - 1 编号。最初,除 0 号房间外的其余所有房间都被锁住。你的目标是进入所有的房间。然而,你不能在没有获得钥匙的时候进入锁住的房间。当你进入一个房间,你可能会在里面找到一套 不同的钥匙,每把钥匙上都有对应的房间号,即表示钥匙可以打开的房间。你可以拿上所有钥匙去解锁其他房间。给你一个数组 rooms 其中 rooms[i] 是你进入 i 号房间可以获得的钥匙集合。如果能进入 所有 房间返回 true,否则返回 false。
2024-12-09 14:51:28
226
原创 Leetcode 739-每日温度
请根据每日 气温 列表 temperatures ,请计算在每一天需要等几天才会有更高的温度。如果气温在这之后都不会升高,请在该位置用 0 来代替。
2024-12-05 16:08:19
367
原创 Leetcode 516-最长回文子序列
给你一个字符串 s ,找出其中最长的回文子序列,并返回该序列的长度。子序列定义为:不改变剩余字符顺序的情况下,删除某些字符或者不删除任何字符形成的一个序列。
2024-12-05 10:23:45
369
原创 Leetcode 309-最佳买卖股票时机含冷冻期
只关注卖出的那一天!只关注卖出的那一天!只关注卖出的那一天!题目中定义的“冷冻期”=卖出的那一天的后一天,题目设置冷冻期的意思是,如果昨天卖出了,今天不可买入,那么关键在于哪一天卖出,只要在今天想买入的时候判断一下前一天是不是刚卖出,即可,所以关键的一天其实是卖出的那一天,而不是卖出的后一天因为当天卖出股票实际上也是属于“不持有”的状态,那么第i天如果不持有,那这个“不持有”就有了两种状态:1.本来就不持有,指不是因为当天卖出了才不持有的;2.第i天因为卖出了股票才变得不持有。
2024-12-04 12:57:09
935
1
原创 Leetcode 188-买卖股票的最佳时机 IV(k次买卖股票)
给你一个整数数组 prices 和一个整数 k ,其中 prices[i] 是某支给定的股票在第 i 天的价格。
2024-12-02 19:34:29
173
原创 Leetcode-123. 买卖股票的最佳时机 III
也可以这么理解:如果第一次卖出已经是最大值了,那么我们可以在当天立刻买入再立刻卖出。所以dp[4][4]已经包含了dp[4][2]的情况。也就是说第二次卖出手里所剩的钱一定是最多的,所以是dp[4][4]
2024-12-02 19:05:25
904
转载 Leetcode-213. 打家劫舍 II
给定一个代表每个房屋存放金额的非负整数数组,计算你 在不触动警报装置的情况下 ,今晚能够偷窃到的最高金额。
2024-11-28 19:05:24
45
原创 Leetcode 96-不同的二叉搜索树
给你一个整数 n ,求恰由 n 个节点组成且节点值从 1 到 n 互不相同的 二叉搜索树 有多少种?返回满足题意的二叉搜索树的种数。
2024-11-14 16:50:57
425
原创 Leetcode 968-监控二叉树
给定一个二叉树,我们在树的节点上安装摄像头。节点上的每个摄影头都可以监视其父对象、自身及其直接子对象。计算监控树的所有节点所需的最小摄像头数量。
2024-11-13 16:30:02
389
原创 Leetcode 56-合并区间
以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, endi]。请你合并所有重叠的区间,并返回 一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间。
2024-11-13 13:12:04
280
原创 Leetcode 135-分发糖果
3)从右往左查看,若满足右规则,令 candy[j] =Math.max(candy[j + 1] + 1,candy[j]),取最大值是为了在满足右规则的时候不破坏左规则。2)从左往右查看,若满足左规则,令 candy[i] =candy[i - 1] + 1。1)所有人分1个candy。
2024-10-08 19:20:54
418
转载 Leetcode 78-子集
给你一个整数数组 nums ,数组中的元素 互不相同。返回该数组所有可能的子集(幂集)。解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。
2024-09-19 20:25:22
139
原创 Leetcode 93-复原 IP 地址
有效 IP 地址 正好由四个整数(每个整数位于 0 到 255 之间组成,且不能含有前导 0),整数之间用 ‘.’ 分隔。例如:“0.1.2.201” 和 “192.168.1.1” 是 有效 IP 地址,但是 “0.011.255.245”、“192.168.1.312” 和 “192.168@1.1” 是 无效 IP 地址。给定一个只包含数字的字符串 s ,用以表示一个 IP 地址,返回所有可能的有效 IP 地址,这些地址可以通过在 s 中插入 ‘.’ 来形成。
2024-09-19 19:39:54
764
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人