- 博客(29)
- 收藏
- 关注
原创 算法日记(2024.12.09)
输入:root = [2,null,3,null,4,null,5,null,6]输入:root = [2,null,3,null,4,null,5,null,6]输入:root = [3,9,20,null,null,15,7]输入:root = [3,9,20,null,null,15,7]最小深度是从根节点到最近叶子节点的最短路径上的节点数量。最小深度是从根节点到最近叶子节点的最短路径上的节点数量。说明:叶子节点是指没有子节点的节点。说明:叶子节点是指没有子节点的节点。
2024-12-09 23:49:46
334
原创 算法日记(2024.12.05)
二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。输入:root = [3,9,20,null,null,15,7]输入:root = [1,2,2,null,3,null,3]给你一个二叉树的根节点 root , 检查它是否轴对称。输入:root = [1,2,2,3,4,4,3]进阶:你可以运用递归和迭代两种方法解决这个问题吗?树中节点的数量在 [0, 104] 区间内。树中节点数目在范围 [1, 1000] 内。输入:root = [1,null,2]
2024-12-06 00:53:55
281
原创 算法日记(2024.12.01)
/ 返回 1.5 ((1 + 2) / 2)例如 arr = [2,3] 的中位数是 (2 + 3) / 2 = 2.5。输出:[null, 4, 5, 5, 8, 8]
2024-12-02 01:17:48
339
原创 算法日记(2024.11.28)
你的目标是进入所有的房间。然而,你不能在没有获得钥匙的时候进入锁住的房间。给你一个数组 rooms 其中 rooms[i] 是你进入 i 号房间可以获得的钥匙集合。当你进入一个房间,你可能会在里面找到一套 不同的钥匙,每把钥匙上都有对应的房间号,即表示钥匙可以打开的房间。此外,你可以认为原始数据不包含数字,所有的数字只表示重复的次数 k ,例如不会出现像 3a 或 2[4] 的输入。输入:rooms = [[1,3],[3,0,1],[2],[0]]输入:rooms = [[1],[2],[3],[]]
2024-11-28 23:19:36
391
原创 算法日记(2024.11.26)
输入:nums = [[4,10,15,24,26], [0,9,12,20], [5,18,22,30]]输入:n = 4, pick = [[0,0],[1,0],[1,0],[2,1],[2,1],[2,0]]输入:n = 5, pick = [[1,1],[1,2],[1,3],[1,4]]输入:n = 5, pick = [[1,1],[2,4],[2,4],[2,4]]输入:nums = [[1,2,3],[1,2,3],[1,2,3]]如果玩家 0 获得了任何的球,那么玩家 0 是胜利玩家。
2024-11-27 00:25:42
376
原创 算法日记(2024.11.25)
例如,nums = [2, 1] ,可以在 2 之前添加 ‘+’ ,在 1 之前添加 ‘-’ ,然后串联起来得到表达式 “+2-1”。输入:lists = [[1,4,5],[1,3,4],[2,6]]输入:nums = [1,1,1,1,1], target = 3。请你将所有链表合并到一个升序链表中,返回合并后的链表。输入:nums = [1], target = 1。输出:[1,1,2,3,4,4,5,6]lists[i] 按 升序 排列。输入:lists = [[]]输入:lists = []
2024-11-25 21:59:38
386
原创 算法日记(2024.11.24)
链接:https://leetcode.cn/leetbook/read/queue-stack/genw3/链接:https://leetcode.cn/leetbook/read/queue-stack/kfgtt/输入: temperatures = [73,74,75,71,69,72,76,73]输入: temperatures = [30,40,50,60]输出: [1,1,4,2,1,1,0,0]解释:12 = 4 + 4 + 4。输出: [1,1,1,0]输出: [1,1,0]
2024-11-24 23:06:55
196
原创 算法日记(2024.11.18)
6] = “0001111” 的所有子字符串中,除 s[0…输入:s = “010101”, k = 1, queries = [[0,5],[1,4],[2,3]]解释:产生的好友请求为 110 -> 100 ,120 -> 110,120 -> 100。另给你一个二维整数数组 queries ,其中 queries[i] = [li, ri]。输入:s = “0001111”, k = 2, queries = [[0,6]]输入:ages = [20,30,100,110,120]
2024-11-19 00:26:49
492
原创 算法日记(2024.11.12)
void addAtIndex(int index, int val) 将一个值为 val 的节点插入到链表中下标为 index 的节点之前。val 是当前节点的值,next 是指向下一个节点的指针/引用。void deleteAtIndex(int index) 如果下标有效,则删除链表中下标为 index 的节点。int get(int index) 获取链表中下标为 index 的节点的值。void addAtTail(int val) 将一个值为 val 的节点追加到链表中作为链表的最后一个元素。
2024-11-13 00:32:44
669
原创 算法日记(2024.11.11)
int get(int key) 如果关键字 key 存在于缓存中,则返回关键字的值,否则返回 -1。// 该操作会使得关键字 2 作废,缓存是 {1=1, 3=3}// 该操作会使得关键字 1 作废,缓存是 {4=4, 3=3}对于 n = 1、2、3、4 和 5 的情况,中间节点的下标分别是 0、1、1、2 和 2。// 缓存是 {1=1, 2=2}对于 n = 4 ,值为 3 的节点 2 是中间节点,用红色标注。对于 n = 2 ,值为 1 的节点 1 是中间节点,用红色标注。
2024-11-12 00:00:36
618
原创 算法日记(2024.11.10)
给你一个仅由整数组成的有序数组,其中每个元素都会出现两次,唯有一个数只会出现一次。输入: nums = [1,1,2,3,3,4,4,8,8]输入: nums = [3,3,7,7,10,11,11]不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。输入:head = [1,2,3,4,5]链表的长度范围为 [1, 5 * 104]输入:head = [1,2,3,4]请你找出并返回只出现一次的那个数。输出:[1,5,2,4,3]输出:[1,4,2,3]
2024-11-10 23:50:20
390
原创 算法日记(2024.11.07)
int getRandom() 从链表中随机选择一个节点并返回该节点的值。// getRandom() 方法应随机返回 1、2、3中的一个,每个元素被返回的概率相等。最初,n 和 k 的二进制表示分别为 n = (1101)2 和 k = (0100)2,给你一个单链表,随机选择链表的一个节点,并返回相应的节点值。结果整数为 n = (0100)2 = k。你可以选择 n 的 二进制表示 中任意一个值为 1 的位,并将其改为 0。如果无法实现,返回 -1。输出 [null, 1, 3, 2, 2,3]
2024-11-08 00:08:07
389
原创 算法日记(2024.11.06)
Alice 拿走 1 枚价值为 75 的硬币和 4 枚价值为 10 的硬币。Alice 拿走 1 枚价值为 75 的硬币和 4 枚价值为 10 的硬币。输入:nums = [1,2,3,4,3,2,5], k = 3。输入:nums = [3,2,3,2,3,2], k = 2。输入:nums = [2,2,2,2,2], k = 4。[3, 4, 3] 中元素 不是 连续的。[4, 3, 2] 中元素 不是 上升的。[1, 2, 3] 中最大元素为 3。输出:[3,4,-1,-1,-1]
2024-11-06 23:52:22
274
原创 算法日记(2024.11.05)
给你一个链表的头节点 head 和一个特定值 x ,请你对链表进行分隔,使得所有 小于 x 的节点都出现在 大于或等于 x 的节点之前。输入:head = [1,2,3,4,5], left = 2, right = 4。输入:head = [5], left = 1, right = 1。输入:head = [1,4,3,2,5,2], x = 3。输入:head = [2,1], x = 2。链表中节点的数目在范围 [0, 200] 内。输出:[1,2,2,4,3,5]输出:[1,4,3,2,5]
2024-11-05 23:40:44
262
原创 算法日记(2024.11.04)
给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。给你一个按照非递减顺序排列的整数数组 nums,和一个目标值 target。请你找出给定目标值在数组中的开始位置和结束位置。你必须设计并实现时间复杂度为 O(log n) 的算法解决此问题。如果数组中不存在目标值 target,返回 [-1, -1]。链表中节点的数目在范围 [0, 100] 内。nums 是一个非递减数组。
2024-11-04 22:40:44
222
原创 算法日记(2024.11.03)
返回一个整数数组 answer ,其中 answer[i] 是第 i 个节点( 从1开始 )的下一个更大的节点的值。如果第 i 个节点没有下一个更大的节点,设置 answer[i] = 0。对于列表中的每个节点,查找下一个 更大节点 的值。也就是说,对于每个节点,找到它旁边的第一个节点的值,这个节点的值 严格大于 它的值。输入:head = [2,7,4,3,5]解释:1 * 1 + 2 * 2 = 5。输入:head = [2,1,5]输出:[7,0,5,5,0]输出:[5,5,0]
2024-11-04 02:03:07
251
原创 算法日记(2024.10.31)
链接:https://leetcode.cn/leetbook/read/top-interview-questions-hard/xwcdnh/输入:head = [1,2,3,4,5], k = 2。链表中节点的数目在范围 [0, 5 * 104] 内。输入:head = [0,1,2], k = 4。输入:head = [-1,5,3,4,0]输入:head = [4,2,1,3]输出:[-1,0,3,4,5]输出:[4,5,1,2,3]输出:[1,2,3,4]输出:[2,0,1]
2024-10-31 23:20:11
246
1
原创 算法日记(2024.10.30)
链接:https://leetcode.cn/leetbook/read/linked-list/fv6w7/。输入:l1 = [9,9,9,9,9,9,9], l2 = [9,9,9,9]输入:l1 = [1,2,4], l2 = [1,3,4]输入:l1 = [2,4,3], l2 = [5,6,4]输入:l1 = [0], l2 = [0]输入:l1 = [], l2 = [0]输出:[8,9,9,9,0,0,0,1]输入:l1 = [], l2 = []输出:[1,1,2,3,4,4]
2024-10-30 23:43:49
365
原创 算法日记(2024.10.28)
给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点。给定单链表的头节点 head ,将所有索引为奇数的节点和索引为偶数的节点分别组合在一起,然后返回重新排序的列表。输入:head = [1,2,6,3,4,5,6], val = 6。给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。输入:head = [7,7,7,7], val = 7。输入: head = [2,1,3,5,6,4,7]
2024-10-28 21:06:20
496
原创 算法日记(2024.10.27)
如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。输入:head = [3,2,0,-4], pos = 1。输入:head = [3,2,0,-4], pos = 1。
2024-10-27 23:38:42
333
原创 算法日记(2024.10.24)
给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i!输入: strs = [“eat”, “tea”, “tan”, “ate”, “nat”, “bat”]输出: [[“bat”],[“nat”,“tan”],[“ate”,“eat”,“tea”]]可以按任意顺序返回结果列表。不同的三元组是 [-1,0,1] 和 [-1,-1,2]。输入:nums = [-1,0,1,2,-1,-4]输出:[[-1,-1,2],[-1,0,1]]
2024-10-24 23:39:29
463
原创 算法日记(2024.10.23)
例如,要压缩字符串 “3322251” ,我们将 “33” 用 “23” 替换,将 “222” 用 “32” 替换,将 “5” 用 “15” 替换并将 “1” 用 “11” 替换。链接:https://leetcode.cn/leetbook/read/top-interview-questions-easy/xnr003/输入:strs = [“flower”,“flow”,“flight”]输入:strs = [“dog”,“racecar”,“car”]解释:“sad” 在下标 0 和 6 处匹配。
2024-10-23 23:48:50
444
原创 算法日记(2024.10.22)
具体来说,小于 −2^31 的整数应该被舍入为 −2^31 ,大于 2^31 − 1 的整数应该被舍入为 2^31 − 1。第 2 步:“1337c0d3”(当前没有读入字符,因为这里不存在 ‘-’ 或者 ‘+’)s 由英文字母(大写和小写)、数字(0-9)、’ ‘、’+‘、’-’ 和 ‘.’ 组成。第 2 步:“0-1” (当前没有读入字符,因为这里不存在 ‘-’ 或者 ‘+’)第 3 步:“0-1” (读入 “0”;第 2 步:“42”(当前没有读入字符,因为这里不存在 ‘-’ 或者 ‘+’)
2024-10-22 23:50:39
363
原创 算法日记(2024.10.21)
输入:matrix = [[5,1,9,11],[2,4,8,10],[13,3,6,7],[15,14,12,16]]如果 nums2 的元素存储在磁盘上,内存是有限的,并且你不能一次加载所有的元素到内存中,你该怎么办?输出:[[15,13,2,5],[14,3,4,1],[12,6,8,9],[16,7,10,11]]输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]输出:[[7,4,1],[8,5,2],[9,6,3]]你可以假设除了整数 0 之外,这个整数不会以零开头。
2024-10-21 23:35:31
364
原创 算法日记(2024.10.20)
解释:在第 1 天(股票价格 = 1)的时候买入,在第 5 天 (股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5 - 1 = 4。随后,在第 4 天(股票价格 = 3)的时候买入,在第 5 天(股票价格 = 6)的时候卖出, 这笔交易所能获得利润 = 6 - 3 = 3。在每一天,你可以决定是否购买和/或出售股票。输入: nums = [1,2,3,4,5,6,7], k = 3。输入:nums = [1,1,1,3,3,4,3,2,4,2]向右轮转 1 步: [7,1,2,3,4,5,6]
2024-10-20 23:54:55
349
原创 算法日记(2024.10.19)
注意,数组 [a[0], a[1], a[2], …, a[n-1]] 旋转一次 的结果为数组 [a[n-1], a[0], a[1], a[2], …, a[n-2]]。解释:函数应该返回新的长度 5 , 并且原数组 nums 的前五个元素被修改为 0, 1, 2, 3, 4。解释:原数组为 [0,1,2,4,5,6,7] ,旋转 3 次得到输入数组。解释:原数组为 [1,2,3,4,5] ,旋转 3 次得到输入数组。输入:nums = [0,0,1,1,1,2,2,3,3,4]
2024-10-19 23:42:15
482
原创 算法日记(2024.10.18)
链接:https://leetcode.cn/leetbook/read/array-and-string/cuj3m/链接:https://leetcode.cn/leetbook/read/array-and-string/ctyt1/链接:https://leetcode.cn/leetbook/read/array-and-string/c8su7/输出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]在「杨辉三角」中,每个数是它左上方和右上方的数的和。
2024-10-18 22:55:19
302
原创 算法日记(2024.10.17)
numsr-1, numsr] ,并返回其长度。链接:https://leetcode.cn/leetbook/read/array-and-string/cd71t/输入:target = 11, nums = [1,1,1,1,1,1,1,1]输入:target = 7, nums = [2,3,1,2,4,3]输入:target = 4, nums = [1,4,4]输入:nums = [1,1,0,1,1,1]输入:nums = [1,0,1,1,0,1]作者:LeetCode。
2024-10-17 23:12:22
275
原创 算法日记(2024.10.16)
如果设这两个数分别是 numbers[index1] 和 numbers[index2] ,则 1 <= index1 < index2 <= numbers.length。nums 的其余元素和 nums 的大小并不重要。以长度为 2 的整数数组 [index1, index2] 的形式返回这两个整数的下标 index1 和 index2。解释:你的函数应该返回 k = 5,并且 nums 中的前五个元素为 0,0,1,3,4。输入:nums = [0,1,2,2,3,0,4,2], val = 2。
2024-10-16 19:36:39
432
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅