
LeetCode每日一题
文章平均质量分 60
Stray_Lambs
这个作者很懒,什么都没留下…
展开
-
leetcode第369周赛
右移:答案为 coins[i]>>(j+1)\textit{coins}[i]>>(j+1)coins[i]>>(j+1) 加上每个子树 ch\textit{ch}ch 的 dfs(ch,j+1)\textit{dfs}(ch,j+1)dfs(ch,j+1)。因为 k == 1 ,数组的 1-or 等于其中所有元素按位或运算的结果。长度大于或等于 3 的子数组为 [2,4,0], [4,0,0], [0,0,4], [2,4,0,0], [4,0,0,4], [2,4,0,0,4]。原创 2023-10-30 14:23:54 · 389 阅读 · 0 评论 -
每日一题:leetcode1155 掷骰子等于目标和的方法数
dp[i][j] = dp[i][j] + dp[i-1][j-x],其中x的范围是[1-k],i表示几个骰子,j表示这i个骰子能加到的范围,dp[i][j]则表述i个骰子达到j值的方法数。首先看到这个是求方法数,就让我想起了超级楼梯这个递推的动态规划题目,再看看这个数据的规模才1000,直接就是有着异曲同工的思路。当然需要进行一些分支截取,骰子的范围,最小值就是1,最大是k,那么数据的范围就是[n,n*k]。得到 7 的和有 6 种方法:1+6 2+5 3+4 4+3 5+2 6+1。原创 2023-10-24 14:43:39 · 253 阅读 · 0 评论 -
每日一题: leetcode1726 同积元组
1、若 a = c,则 b = d,可以通过反证法推断,如果a = c,但是 b 不等于 d,则式子可以写成 a * b = a * d ==> b = d,所以若 a = c,则 b = d。说白了,其实就是根据给定的nums数组,每个元素两两相乘,遍历一次,记录乘积的个数,然后个数大于2的,根据排列组合公式,从可选组合中选取2个。首先,我们可以从答案上推断出,只要有一组符合的答案,比如 2*3 = 4*6,根据换不同的位置,可以知道,最终的答案就是4元组的个数 * 8。原创 2023-10-19 11:50:21 · 220 阅读 · 0 评论 -
每日一题:leetcode 57 插入区间
跟之前的同向指针一样,只要互不重叠的情况下,就要看需要插入的区间是否在已有的区间内,判断的标准则是看插入的区间左边界是否有小于某个区间的右边界,如果有则合并。并且记录更大的右边界。在列表中插入一个新的区间,你需要确保列表中的区间仍然有序且不重叠(如果有必要的话,可以合并区间)。按照区间起始端点排序的区间列表。原创 2023-08-28 16:03:37 · 417 阅读 · 0 评论 -
每日一题:leetcode 56 合并区间
区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间。区间 [1,4] 和 [4,5] 可被视为重叠区间。表示若干个区间的集合,其中单个区间为。请你合并所有重叠的区间,并返回。原创 2023-08-27 16:42:22 · 337 阅读 · 0 评论 -
每日一题:leetcode 1448 统计二叉树中好节点的数目
往下递归的同时需要维护一个当前路径上的最大值,而ans的话,看个人喜好,我是将ans同步传递下去进行更新。「好节点」X 定义为:从根到该节点 X 所经过的节点中,没有任何节点的值大于 X 的值。节点 2 -> (3, 3, 2) 不是好节点,因为 "3" 比它大。节点 5 -> (3,4,5) 是路径中的最大值。节点 3 -> (3,1,3) 是路径中的最大值。节点 4 -> (3,4) 是路径中的最大值。的二叉树,请你返回二叉树中好节点的数目。根节点 (3) 永远是个好节点。图中蓝色节点为好节点。原创 2023-08-25 14:47:16 · 340 阅读 · 0 评论 -
每日一题:leetcode 1109 航班预订统计
航班编号 1 2 3 4 5。预订记录 3 : 25 25 25 25。总座位数: 10 55 45 25 25。因此,answer = [10,55,45,25,25]预订记录 2 : 20 20。,里面的元素是每个航班预定的座位总数。因此,answer = [10,25]预订记录 1 : 10 10。预订记录 1 : 10 10。预订记录 2 : 15。总座位数: 10 25。原创 2023-08-24 20:02:58 · 354 阅读 · 0 评论 -
每日一题:leetcode 1267 统计参与通信的服务器
还有更优的,比如可以通过hashmap去记录行列是否出现,或者是通过一维数组+一个变量去记录,放一个更优的解法。第一行的两台服务器互相通信,第三列的两台服务器互相通信,但右下角的服务器无法与其他服务器通信。如果两台服务器位于同一行或者同一列,我们就认为它们之间可以进行通信。先按行遍历,如果出现第一个,先记录位置,然后看看有没有第二个的出现。请你统计并返回能够与至少一台其他服务器进行通信的服务器的数量。中,1 表示单元格上有服务器,0 表示没有。(我这种肯定不是最优的)没有一台服务器能与其他服务器进行通信。原创 2023-08-24 16:39:18 · 581 阅读 · 0 评论 -
每日一题:leetcode 849 到最近的人的最大距离
记录上一个乘客的位置极为last,然后当前的乘客的位置为cur,最大的位置就是(cur-last)/ 2。当然需要判断特殊情况,比如前面都是空位置,然后坐第一个位置上,最大距离就是第一个位置到第一个乘客的位置。同理,最后都是空位置,坐在最后一个位置上,最大距离就是上一个乘客到最后一个空位置的大小。亚历克斯希望坐在一个能够使他与离他最近的人之间的距离达到最大化的座位上。如果亚历克斯坐在其它任何一个空位上,他到离他最近的人的距离为 1。如果亚历克斯坐在最后一个座位上,他离最近的人有 3 个座位远。原创 2023-08-22 15:05:45 · 129 阅读 · 0 评论 -
每日一题:2337 移动片段得到字符串
也就是说,start = L 的下标需要大于target的下标, start = R的下标需要小于target的下标。1、暴力模拟,考虑start和target不同的时候的每种情况,针对不同的情况进行判断。2、双指针,我们可以想到,LR是可以进行移动的,那么其实‘_’就没有什么含义,因为LR的相对位置不会改变。但是,在这一步之后,不存在可以移动的片段,所以无法从字符串 start 得到 target。字符串 start 中的片段只能向右移动,所以无法从字符串 start 得到 target。原创 2023-08-21 18:42:27 · 269 阅读 · 0 评论 -
leetcode第359场周赛
1、同向双指针需要将每个元素的下标进行标记,对于每种相同的元素进行遍历,需要判断right - left 的下标是不是超过了k,如果超过了k表示right和left区间内,这种元素需要删除的数太多了。那么就可以理解为,不存在a+b=k的情况,并且需要返回长度等于n的最小总和,肯定就是从1开始往上递增的来取,换句话说, 不就是取a+b=k,加数最小的那个不就好了。2、滑动窗口的想法其实类似,只不过是需要维护一个hash map,map中存放的是窗口内元素的数量,key是元素值,value是对应元素的个数。原创 2023-08-20 18:06:04 · 426 阅读 · 0 评论 -
每日一题:leetcode1338 3n块披萨
但以[8,9,8,1,2,3]为例,如果我们第一步选取了9,剩下的元素就变成了[1,2,3],我们最大只能选择3,这样的总和就只有12,而显然选取两个8可以得到16的总和,是更优的。首先,每一次选择都是可以自由选择披萨,但是选择完成之后,左右两边披萨则是不能选择,所以可以简化题目,看成在循环列表中,选取n/3个不连续的元素的最大值。如果你选择大小为 9 的披萨,你的朋友们就会选择大小为 8 的披萨,这种情况下你的总和不是最大的。重复这样的操作,直到选取了n/3个元素为止,我们就得到了需要的最优解。原创 2023-08-18 14:44:20 · 363 阅读 · 0 评论 -
LeetCode每日一题——2682. 找出转圈游戏输家
然后记录遍历过的玩家数量cnt,用于后面答案数组的初始化长度 n - cnt,vis标记为是否遍历过的玩家。2)第 3 个朋友将球传给距离他顺时针方向 4 步的玩家 —— 第 2 个朋友。3)第 2 个朋友将球传给距离他顺时针方向 6 步的玩家 —— 第 3 个朋友。个朋友将球传给距离他顺时针方向 2 步的玩家 —— 第 3 个朋友。个朋友将球传给距离他顺时针方向 4 步的玩家 —— 第 1 个朋友。4)第 3 个朋友接到两次球,游戏结束。2)第 1 个朋友接到两次球,游戏结束。给你参与游戏的朋友数量。原创 2023-08-16 16:23:51 · 715 阅读 · 0 评论