- 博客(238)
- 收藏
- 关注
原创 【leetcode】226. 翻转二叉树
然后对左子树(节点 2)递归反转。先对右子树(节点 3)递归反转。节点 3 没有子树,所以直接返回,结果是 3。给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。最后,返回到根节点,继续处理已经反转的子树。从根节点 1 开始,我们需要交换 1 的左子树和右子树。接下来,我们递归地对左右子树进行反转。步骤 2: 递归反转左右子树。步骤 3: 完整的反转结果。步骤 1: 反转根节点。
2025-06-12 21:15:15
138
原创 【leetcode】104. 二叉树的最大深度
return max(left_height, right_height) + 1:通过 max(left_height, right_height) 计算左右子树深度的最大值,再加 1 表示当前节点的深度。left_height = self.maxDepth(root.left):如果当前节点不是空的,那么递归调用 maxDepth来计算当前节点左子树的深度。如果是空节点,则深度为 0。左子树的最大深度是 3(节点 2 -> 节点 4 或节点 5),右子树的最大深度是 1(只有节点 3)。
2025-06-12 21:04:06
256
原创 【leetcode】36. 有效的数独
请你判断一个 9 x 9 的数独是否有效。只需要 根据以下规则 ,验证已经填入的数字是否有效即可。数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。只需要根据以上规则,验证已经填入的数字是否有效即可。一个有效的数独(部分已被填充)不一定是可解的。数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。空白格用 ‘.’ 表示。
2025-06-11 20:57:27
450
原创 【leetcode】125.验证回文串
如果在将所有大写字符转换为小写字符、并移除所有非字母数字字符之后,短语正着读和反着读都一样。给你一个字符串 s,如果它是 回文串 ,返回 true;输入: s = “A man, a plan, a canal: Panama”解释:“amanaplanacanalpanama” 是回文串。解释:在移除非字母数字字符之后,s 是一个空字符串 “”。由于空字符串正着反着读都一样,所以是回文串。解释:“raceacar” 不是回文串。输入:s = “race a car”输入:s = " "
2025-06-11 20:54:15
249
原创 【leetcode】88. 合并两个有序数组
输入:nums1 = [1,2,3,0,0,0], m = 3, nums2 = [2,5,6], n = 3。合并结果是 [1,2,2,3,5,6] ,其中斜体加粗标注的为 nums1 中的元素。输入:nums1 = [0], m = 0, nums2 = [1], n = 1。输入:nums1 = [1], m = 1, nums2 = [], n = 0。解释:需要合并 [1,2,3] 和 [2,5,6]。解释:需要合并的数组是 [] 和 [1]。输出:[1,2,2,3,5,6]
2025-06-10 21:02:26
411
原创 【leetcode】26. 删除有序数组中的重复项
给你一个 非严格递增排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。更改数组 nums ,使 nums 的前 k 个元素包含唯一元素,并按照它们最初在 nums 中出现的顺序排列。解释:函数应该返回新的长度 5 , 并且原数组 nums 的前五个元素被修改为 0, 1, 2, 3, 4。解释:函数应该返回新的长度 2 ,并且原数组 nums 的前两个元素被修改为 1, 2。输入:nums = [0,0,1,1,1,2,2,3,3,4]
2025-06-10 21:00:49
370
原创 【leetcode】136. 只出现一次的数字
给你一个 非空 整数数组 nums ,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。你必须设计并实现线性时间复杂度的算法来解决此问题,且该算法只使用常量额外空间。思路:统计出现数字的频次,对出现1次的进行返回。输入:nums = [4,1,2,1,2]输入:nums = [2,2,1]思路:相同数组异或为0,不同为1。输入:nums = [1]
2025-06-09 23:15:36
487
原创 【leetcode】118. 杨辉三角
输出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]给定一个非负整数 numRows,生成「杨辉三角」的前 numRows 行。在「杨辉三角」中,每个数是它左上方和右上方的数的和。输入: numRows = 5。输入: numRows = 1。
2025-06-09 23:11:49
311
原创 【leetcode】239. 滑动窗口最大值
给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。返回 滑动窗口中的最大值。
2025-06-07 21:43:05
271
1
原创 【leetcode】150. 逆波兰表达式求值
给你一个字符串数组 tokens ,表示一个根据 逆波兰表示法 表示的算术表达式。输入:tokens = [“10”,“6”,“9”,“3”,“+”,“-11”,“解释:该算式转化为常见的中缀算术表达式为:(4 + (13 / 5)) = 6。解释:该算式转化为常见的中缀算术表达式为:((2 + 1) * 3) = 9。输入:tokens = [“4”,“13”,“5”,“/”,“+”]输入:tokens = [“2”,“1”,“+”,“3”,“*”]有效的算符为 ‘+’、‘-’、‘*’ 和 ‘/’。
2025-06-07 21:38:38
307
1
原创 【leetcode】283. 移动零
给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。请注意 ,必须在不复制数组的情况下原地对数组进行操作。输入: nums = [0,1,0,3,12]输出: [1,3,12,0,0]输入: nums = [0]
2025-06-06 19:19:47
260
原创 【leetcode】3. 无重复字符的最长子串
请注意,你的答案必须是 子串 的长度,“pwke” 是一个子序列,不是子串。给定一个字符串 s ,请你找出其中不含有重复字符的 最长 子串 的长度。解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。解释: 因为无重复字符的最长子串是 “wke”,所以其长度为 3。解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。输入: s = “abcabcbb”输入: s = “pwwkew”输入: s = “bbbbb”
2025-06-06 19:17:45
462
原创 【leetcode】141. 环形链表
如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。注意:pos 不作为参数进行传递。仅仅是为了标识链表的实际情况。如果链表中存在环 ,则返回 true。否则,返回 false。给你一个链表的头节点 head ,判断链表中是否有环。
2025-06-05 21:07:12
382
原创 【leetcode】347. 前k个高频元素
这样堆中始终保存的是频率最高的 k 个元素。O(n log k):遍历 nums 中的 n 个元素,每次操作堆的时间复杂度为 O(log k),因此总时间复杂度为 O(n log k)。主要功能: 最小堆:heapq 默认实现的是最小堆(即堆顶是最小的元素)。最小堆的性质: 每个父节点的值都小于或等于其子节点的值,这使得堆顶元素始终是最小的元素。最小堆:通过 heapq 模块来实现最小堆,堆中存储的是 (频次, 数字) 元组。在 heapq 模块中,堆是用列表实现的,列表的第一个元素始终是堆顶元素。
2025-06-05 21:03:45
1454
原创 【leetcode】9. 回文数
给你一个整数 x ,如果 x 是一个回文整数,返回 true;否则,返回 false。解释:从左向右读, 为 -121。从右向左读, 为 121-。因此它不是一个回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。解释:从右向左读, 为 01。因此它不是一个回文数。例如,121 是回文,而 123 不是。数字的长度可能为奇数或者偶数。输入:x = -121。输入:x = 121。
2025-06-04 20:21:15
340
原创 【leetcode】1047. 删除字符串中的所有相邻重复项
例如,在 “abbaca” 中,我们可以删除 “bb” 由于两字母相邻且相同,这是此时唯一可以执行删除操作的重复项。之后我们得到字符串 “aaca”,其中又只有 “aa” 可以执行重复项删除操作,所以最后的字符串为 “ca”给出由小写字母组成的字符串 s,重复项删除操作会选择两个相邻且相同的字母,并删除它们。在完成所有重复项删除操作后返回最终的字符串。在 s 上反复执行重复项删除操作,直到无法继续删除。输入:“abbaca”
2025-06-04 19:53:44
241
原创 【leetcode】15.三数之和
给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i!= k ,同时还满足 nums[i] + nums[j] + nums[k] == 0。不同的三元组是 [-1,0,1] 和 [-1,-1,2]。输入:nums = [-1,0,1,2,-1,-4]输出:[[-1,-1,2],[-1,0,1]]输入:nums = [0,1,1]输入:nums = [0,0,0]解释:唯一可能的三元组和为 0。输出:[[0,0,0]]
2025-06-03 22:58:46
582
原创 【leetcode】20. 有效的括号
给定一个只包括 ‘(’,‘)’,‘{’,‘}’,‘[’,‘]’ 的字符串 s ,判断字符串是否有效。每个右括号都有一个对应的相同类型的左括号。左括号必须用相同类型的右括号闭合。输入:s = “()[]{}”左括号必须以正确的顺序闭合。输入:s = “([])”输入:s = “()”输入:s = “(]”
2025-06-03 22:56:42
377
原创 【leetcode】459.重复的子字符串
解释: 可由子串 “abc” 重复四次构成。(或子串 “abcabc” 重复两次构成。给定一个非空的字符串 s ,检查是否可以通过由它的一个子串重复多次构成。输入: s = “abcabcabcabc”解释: 可由子串 “ab” 重复两次构成。输入: s = “abab”输入: s = “aba”
2025-06-02 21:01:41
531
原创 【leetcode】28. 找出字符串中第一个匹配项的下标
给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串的第一个匹配项的下标(下标从 0 开始)。输入:haystack = “leetcode”, needle = “leeto”输入:haystack = “sadbutsad”, needle = “sad”解释:“leeto” 没有在 “leetcode” 中出现,所以返回 -1。解释:“sad” 在下标 0 和 6 处匹配。第一个匹配项的下标是 0 ,所以返回 0。
2025-06-02 20:59:58
252
原创 【leeetcode】454. 四数相加2
输入:nums1 = [1,2], nums2 = [-2,-1], nums3 = [-1,2], nums4 = [0,2]输入:nums1 = [0], nums2 = [0], nums3 = [0], nums4 = [0]思路:前两个数相加,后两个数相加(取负数),进行判断是否在前两个数构成的字典中。
2025-06-01 14:25:33
272
原创 【leetcode】142. 环形链表2
如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。给定一个链表的头节点 head ,返回链表开始入环的第一个节点。如果链表无环,则返回 null。思路:如果是环形链表终会相遇。哈希表记录走过的节点。
2025-06-01 14:22:41
689
原创 【leetcode】02.07. 链表相交
给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点,返回 null。获取两个链表的长度,然后根据将两个链表的开始节点从同一长度(相对于后面相等)开始。在这道题里,有的链表短,他走完了就去走另一条链表,我们可以理解为走的快的指针。根据快慢法则,走的快的一定会追上走得慢的。
2025-05-30 20:35:33
586
原创 【leetcode】704. 二分查找
给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。输入: nums = [-1,0,3,5,9,12], target = 9。输入: nums = [-1,0,3,5,9,12], target = 2。解释: 9 出现在 nums 中并且下标为 4。解释: 2 不存在 nums 中因此返回 -1。
2025-05-30 20:35:19
432
原创 【leetcode】19. 删除链表的倒数第N个节点
给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。输入:head = [1,2], n = 1。输入:head = [1], n = 1。
2025-05-29 22:47:51
457
原创 【leetcode】24. 两两交换链表中的节点
给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。输入:head = [1]输入:head = []
2025-05-29 22:47:37
368
原创 【leetcode】59. 螺旋矩阵②
给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix。设置上下左右的边界 left, right, top, bottom。输出:[[1,2,3],[8,9,4],[7,6,5]]
2025-05-28 21:02:29
333
原创 【leetcode】977. 有序数组的平方
给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。判断左右两边的平方,将大的平方放在右边,右边的指针-1。解释:平方后,数组变为 [16,1,0,9,100]输入:nums = [-4,-1,0,3,10]输入:nums = [-7,-3,2,3,11]排序后,数组变为 [0,1,9,16,100]输出:[0,1,9,16,100]输出:[4,9,9,49,121]非递减顺序:才能使用双指针。直接平方,使用sorted。
2025-05-27 22:55:37
879
原创 【leetcode】209. 长度最小的子数组
找出该数组中满足其总和大于等于 target 的长度最小的 子数组 [numsl, numsl+1, …, numsr-1, numsr] ,并返回其长度。输入:target = 11, nums = [1,1,1,1,1,1,1,1]输入:target = 7, nums = [2,3,1,2,4,3]给定一个含有 n 个正整数的数组和一个正整数 target。输入:target = 4, nums = [1,4,4]解释:子数组 [4,3] 是该条件下的长度最小的子数组。暴力求解: 18 / 21。
2025-05-27 22:51:04
437
原创 解决:ERROR: No matching distribution found for matplotlib= =3.8.3
【代码】解决:ERROR: No matching distribution found for matplotlib= =3.8.3。
2025-05-24 20:45:00
439
原创 Yolo训练自己的数据集时P、R、mAP等值均为0,解决方法(亲测有效)
在自己想用yolo训练自己的数据集时,有时候会自己标注10来张图片进行测试,但训练100个epoch各项数据仍然为0,这时就会怀疑是否是自己的数据量不够,还是模型错误,还是哪个步骤没弄对,这里有一个简单的排除方法,可以测试自己的数据质量是否达标。,重复2次及以上,至少就有30几张图片和标签了,然后再次训练,这时候P、R、mAP都有值,但很小。所以你就需要考虑数据质量的问题了,搜集不同的图片进行标注,然后再次进行训练(检测+分割)。图片的大小应该是一样的,val里面的图片大于2。
2025-05-24 20:30:00
202
原创 【leetcode】75. 颜色分类
原地 对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。必须在不使用库内置的 sort 函数的情况下解决这个问题。给定一个包含红色、白色和蓝色、共 n 个元素的数组。
2025-05-23 20:30:00
354
原创 【leetcode】3356. 零数组变换②
链接:https://leetcode.cn/problems/zero-array-transformation-ii/solutions/2991505/liang-chong-fang-fa-er-fen-da-an-chai-fe-rcvg/时间复杂度:O((n+q)logq),其中 n 是 nums 的长度,q 是 queries 的长度。给你一个长度为 n 的整数数组 nums 和一个二维数组。空间复杂度:O(n)。是指所有元素都等于 0 的数组。暴力求解:倒在621/627。
2025-05-23 20:15:00
822
原创 【leetcode】3355. 零数组变换Ⅰ
输入: nums = [4,3,2,1], queries = [[1,3],[0,2]]输入: nums = [1,0,1], queries = [[0,2]]选择下标子集 [1, 2, 3] 并将这些下标处的值减 1。选择下标子集 [0, 1, 2] 并将这些下标处的值减 1。数组将变为 [3, 1, 0, 0],这不是一个零数组。选择下标子集 [0, 2] 并将这些下标处的值减 1。数组将变为 [0, 0, 0],这是一个零数组。数组将变为 [4, 2, 1, 0]。来自于leetcode评论。
2025-05-22 20:15:00
668
原创 【leetcode】746. 使用最小花费爬楼梯
给你一个整数数组 cost ,其中 cost[i] 是从楼梯第 i 个台阶向上爬需要支付的费用。一旦你支付此费用,即可选择向上爬一个或者两个台阶。你可以选择从下标为 0 或下标为 1 的台阶开始爬楼梯。请你计算并返回达到楼梯顶部的最低花费。:15:你将从下标为 1 的台阶开始。支付 15 ,向上爬两个台阶,到达楼梯顶部。总花费为 15。:6:你将从下标为 0 的台阶开始。
2025-05-22 20:00:00
200
原创 【leetcode】70. 爬楼梯
每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?需要 n 阶你才能到达楼顶。解释:有两种方法可以爬到楼顶。解释:有三种方法可以爬到楼顶。
2025-05-21 19:45:43
399
原创 【leetcode】75.颜色分类
给定一个包含红色、白色和蓝色、共 n 个元素的数组 nums ,原地 对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。必须在不使用库内置的 sort 函数的情况下解决这个问题。输入:nums = [2,0,2,1,1,0]输入:nums = [2,0,1]输出:[0,0,1,1,2,2]输出:[0,1,2]
2025-05-21 19:45:04
431
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人