- 博客(31)
- 收藏
- 关注
原创 Leetcode Day21组合总和
输入:candidates = [2,3,6,7], target = 7输出:[[2,2,3],[7]]可以重复选, 代表中, 下一个dfs起点可以是j, 这样代表了重复选择, 但是如何保证不会死循环呢, 就需要利用都是正数的条件了。
2024-09-04 16:59:08 256
原创 Leetcode Day19 技巧类
异或运算满足交换律和结合律:a ^ b ^ c = a ^ (b ^ c) = (a ^ b) ^ c。相当于1101s中的accumulate, 你也可以自己指定起始值,最终,reduce 函数返回的结果就是只出现一次的那个数字。任何数与 0 异或得到的结果是其本身:a ^ 0 = a。任何数与其自身异或得到的结果是 0:a ^ a = 0。只出现一次的数字会保留下来(因为 a ^ 0 = a)出现两次的数字会相互抵消(因为 a ^ a = 0)
2024-09-02 14:16:49 233
原创 Leetcode Day16 定长滑动窗口
给你一个长度为 n 下标从 0 开始的字符串 blocks ,blocks[i] 要么是 ‘W’ 要么是 ‘B’ ,表示第 i 块的颜色。输入:customers = [1,0,1,2,1,1,7,5], grumpy = [0,1,0,1,0,1,0,1], minutes = 3。请你返回 nums 中长度为 k 的 几乎唯一 子数组的 最大和 ,如果不存在几乎唯一子数组,请你返回 0。请返回字符串 s 中长度为 k 的单个子字符串中可能包含的最大元音字母数。
2024-08-29 11:52:52 693
原创 LeetcodeDay15 不定长滑动窗口
解释:恰好由 2 个不同整数组成的子数组:[1,2], [2,1], [1,2], [2,3], [1,2,1], [2,1,2], [1,2,1,2]., numsr-1, numsr] ,并返回其长度。输入:nums = [1,1,1,0,0,0,1,1,1,1,0], K = 2。解释:包含 3 个奇数的子数组是 [1,1,2,1] 和 [1,2,1,1]。否则,返回 -1。输入:nums = [1,2,1,2,3], k = 2。输入:nums = [1,1,2,1,1], k = 3。
2024-08-28 19:25:39 848
原创 Leetcode Day 12 高级图论
在选修某些课程之前需要一些先修课程。先修课程按数组 prerequisites 给出,其中 prerequisites[i] = [ai, bi] ,表示如果要学习课程 ai 则 必须 先学习课程 bi。你这个学期必须选修 numCourses 门课程,记为 0 到 numCourses - 1。请你判断是否可能完成所有课程的学习?如果可以,返回 true;否则,返回 false。例如,先修课程对 [0, 1] 表示:想要学习课程 0 ,你需要先完成课程 1。
2024-08-25 00:15:05 150
原创 Leetcode Day10 二分查找
162 寻找峰值153 数组向右一次移动k次后, 找min153 变种, 找到target注意怎么分case比较好
2024-08-24 15:59:59 125
原创 LLM八股文
可以看到在long-former中, 有一些token被选为可以global attention的对象, 与其他所有进行交互。Bidbird就是band + global + random。
2024-08-24 13:09:32 270
原创 Leetcode Day-8 (hot100 二叉树专题)
又犯了同一个错误, 这种题是不能递归的, 即使左侧是valid, 能保证左侧的一定比右侧的小吗。第二个想法是耍小聪明, 用中序遍历得到res, 看res和res[::-1相等吗,🤡了。第一个想法是用递归, 看左边对称不, 右边对称不, 但是整个树对称没必要子树也对称啊。思路:先递归右子树,再递归左子树,当某个深度首次到达时,对应的节点就在右视图中。, 在切片操作中, mid+1超出范围的话直接返回空列表, 太优雅了。注意先把L和R给赋值了, 不然下面的你再用dfs会增加计算。
2024-08-22 11:38:37 329
原创 Leetcode Day6 (图论I, dfs, bfs)
虽然写的是easy但一点都不easy好吧, 什么时候多加1呢?当dfs每经过一个水域或者边界的时候, 就会增加1。主要的地方是res在哪里加, dfs的直接返回情况有哪些(一定要注意or grid[x][y] == ‘0’)当然不这样递归也可以, 但就需要对每一个递归开始初始化一个global variable。这个地方的区别就在于在哪里进行面积+=1的操作, 实际上本方法用的是递归。其实简单, 就先数一下几块地, 分别多大, 然后暴力尝试。
2024-08-20 18:14:23 271
原创 Leetcode Day5 (回溯专题)
当出现了一个{1,2,5}的时候,进行到第二次{1,2,5}到{1,2}的时候,第二个未完成的{1,2,5}的2的下标一定是cur>begin的,直接跳过就不会产生相同的{1,2,5}了,同理如果有第3个2也可以跳过!示例: 输入: n = 4, k = 2 输出: [ [2,4], [3,4], [2,3], [1,2], [1,3], [1,4], ]输入:candidates = [2,3,6,7], target = 7。输出:[[],[1],[1,2],[1,2,2],[2],[2,2]]
2024-08-19 23:45:56 706
原创 Leetcode Day4 (动态规划II)(dp遇上二叉树)
你原来的代码主要问题是在返回值时包含了 A(跨越左右子树的路径),这可能导致在更高层的节点计算时使用了一个已经"拐弯"的路径,违反了路径的定义(路径被定义为从树中任意节点出发,达到任意节点的序列,且路径每到达一个节点,只能选择向上或者向下访问一个相邻节点,不能重复访问)。我的第一想法是: 按照他的思路就输了(不能够这样想: 从任意一个节点出发), 原因是题所给的数据结构不支持node.parent, 往上遍历是非常困难的. 我们仍然应该保持从上到下遍历的习惯.但很不幸的是最后两个cases超时了。
2024-08-11 19:06:05 575
原创 Leetcode Day4 (动态规划I) (很多路径题)
简单说一下自己的理解,f(i,j)表示以(i,j)为右下角的正方形的最大边长,如果 (i,j)为“0”,以(i,j)为右下角不可能构成全为“1”的正方形f(i,j)=0,如果(i,j)为“1”,至少可以获得边长为1的正方形,还能不能变大只能向左向上扩展边长,这个时候需要看正上,左边和左上三个点,因为扩展定会将这三个相邻点包含进来,如果三个点中最小值为0,那么扩展后肯定不行,如果最小值为1,那么三个点都为1,定能扩展成边长为2的正方形,同理能扩展到最大的是 min(左,上,左上) + 1。
2024-08-10 21:29:11 766
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人