
leetcode刷题
文章平均质量分 72
leetcode 刷题
AIGC_增益
欢迎点赞收藏,持续关注!
展开
-
LeetCode :86. 分隔链表(Python)
给你一个链表的头节点 head 和一个特定值 x ,请你对链表进行分隔,使得所有 小于 x 的节点都出现在 大于或等于 x 的节点之前。输入:head = [1,4,3,2,5,2], x = 3。你应当 保留 两个分区中每个节点的初始相对位置。输入:head = [2,1], x = 2。链表中节点的数目在范围 [0, 200] 内。输出:[1,2,2,4,3,5]原创 2025-03-18 09:43:33 · 309 阅读 · 0 评论 -
LeetCode 102. 二叉树的层序遍历,BFS(广度优先搜索)(Python)
给你二叉树的根节点 root ,返回其节点值的 层序遍历。(即逐层地,从左到右访问所有节点)。输入:root = [3,9,20,null,null,15,7]输出:[[3],[9,20],[15,7]]输入:root = [] 输出:[]原创 2025-03-07 23:56:26 · 329 阅读 · 0 评论 -
LeetCode 718.最长重复子数组(动态规划,Python)
给两个整数数组 nums1 和 nums2 ,返回 两个数组中 公共的 、长度最长的子数组的长度。输入:nums1 = [1,2,3,2,1], nums2 = [3,2,1,4,7]输入:nums1 = [0,0,0,0,0], nums2 = [0,0,0,0,0]解释:长度最长的公共子数组是。原创 2025-03-05 17:03:06 · 351 阅读 · 0 评论 -
LeetCode 152.乘积最大子数组(Python)
给你一个整数数组 nums ,请你找出数组中乘积最大的子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。测试用例的答案是一个 32-位 整数。示例 1:输入: nums = [2,3,-2,4] 输出: 6 解释: 子数组 [2,3] 有最大乘积 6。示例 2:输入: nums = [-2,0,-1] 输出: 0 解释: 结果不能为 2, 因为 [-2,-1] 不是子数组。原创 2025-03-05 00:18:42 · 434 阅读 · 0 评论 -
LeetCode 200. 岛屿数量(Python)
下面是一种使用深度优先搜索(DFS)的解决方案。思路是:对于每个格子,如果是陆地(‘1’),则启动一次 DFS,将与该陆地相连的所有陆地都“淹没”(即改为 ‘0’),这样就保证不重复计数。每启动一次 DFS,岛屿数量加 1。原创 2025-03-04 00:19:45 · 710 阅读 · 0 评论 -
LeetCode 125. 验证回文串(python)
如果在将所有大写字符转换为小写字符、并移除所有非字母数字字符之后,短语正着读和反着读都一样。给你一个字符串 s,如果它是 回文串 ,返回 true;输入: s = “A man, a plan, a canal: Panama”输出:true 解释:在移除非字母数字字符之后,s 是一个空字符串 “”。解释:“amanaplanacanalpanama” 是回文串。由于空字符串正着反着读都一样,所以是回文串。解释:“raceacar” 不是回文串。输入:s = “race a car”原创 2025-03-04 00:07:12 · 374 阅读 · 0 评论 -
LeetCode 121.买卖股票的最佳时机(Python)
•。原创 2025-03-03 23:25:56 · 775 阅读 · 0 评论 -
LeetCode 21. 合并两个有序链表(Python)
比较 l1 与 l2 当前节点的值,将较小的节点接到新链表的尾部,并移动对应链表的指针。来遍历两个链表,比较各自的节点值,将较小值的节点连接到新链表上,直至其中一个链表为空,最后将剩余部分直接接到新链表后面。• 如果 l1.val 小于等于 l2.val,则将 l1 作为当前节点,并将 l1.next 指向递归合并后的结果。的核心思想是:比较两个链表的头节点,较小的那个作为合并后链表的头,然后递归合并剩下的部分。递归完成后,每一层调用都会返回合并后的链表头,最终返回整个合并后的链表。原创 2025-03-03 22:55:29 · 395 阅读 · 0 评论 -
LeetCode 20. 有效的括号
左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。每个右括号都有一个对应的相同类型的左括号。给定一个只包括 ‘(’,‘)’,‘{’,‘}’,‘[’,‘]’ 的字符串 s ,判断字符串是否有效。1 <= s.length <= 104 s 仅由括号 ‘()[]{}’ 组成。解法 3:这是一个减少内存占用,增快速度的写法。输入:s = “()[]{}”输入:s = “([])”输入:s = “()”输入:s = “(]”原创 2025-02-25 23:47:52 · 470 阅读 · 0 评论 -
Leetcode : LCR 174. 寻找二叉搜索树中的目标节点(中序遍历,清晰图解)
1. 合并判断:我们首先检查 if not root or self.cnt == 0,这样可以避免在后续的递归中重复检查 self.cnt == 0。这种优化方式通过合并判断和提前终止递归,使得代码更加简洁,并且避免了重复的 if self.cnt == 0 检查,同时提升了执行效率。2. 早期返回:在 if self.cnt == 0 的地方,我们可以直接返回,避免继续递归其他子树,提升效率。记录结果: 若cnt=0,代表当前节点为第cnt大的节点,因此记录res=root.val;原创 2025-02-24 17:54:55 · 743 阅读 · 0 评论 -
leetcode 15. 三数之和
输入:nums = [-1,0,1,2,-1,-4] 输出:[[-1,-1,2],[-1,0,1]] 解释: nums[0] +输入:nums = [0,0,0] 输出:[[0,0,0]] 解释:唯一可能的三元组和为 0。• j = 1, k = 5,即 nums[j] = -1 和 nums[k] = 2。1. 排序后: nums = [-4, -1, -1, 0, 1, 2]。3. 最终结果: [[-1, -1, 2], [-1, 0, 1]]。• 时间复杂度: O(n^2),原创 2025-02-22 23:59:44 · 341 阅读 · 0 评论 -
leetcode 167. 两数之和 II - 输入有序数组
输入:numbers = [2,7,11,15], target = 9 输出:[1,2] 解释:2 与 7 之和等于目标数 9。输入:numbers = [-1,0], target = -1 输出:[1,2] 解释:-1 与 0 之和等于目标数 -1。5. 最后返回 [left + 1, right + 1] = [1, 2],表示索引 1 和 2(即数字 2 和 7)的和为 9。• 13 > 9,所以继续减小和,right -= 1,right 变为 1(指向 7)。返回 [1, 2]。原创 2025-02-22 23:37:30 · 874 阅读 · 0 评论 -
leetcode 1. 两数之和
leetcode原创 2025-02-22 23:24:12 · 873 阅读 · 0 评论 -
leetcode 2506. 统计相似字符串对的数目
这个方法通过使用位运算将字符串转换为位掩码,从而避免了直接对字符串进行排序或使用集合,比直接比较字符集更加高效。时间复杂度为 O(n * k),其中 n 是单词数,k 是单词的平均长度。• |= 是按位或赋值操作符,将右边的值与左边的值按位或,并将结果赋值给左边的变量。• ord(c) - ord('a') 计算字符 c 在字母表中的位置。• 1 << n 是将数字 1 左移 n 位,表示数字 2^n,用于生成表示字符的位掩码。原创 2025-02-22 20:50:02 · 710 阅读 · 0 评论 -
leetcode 215. 数组中的第K个最大元素
给定整数数组 nums 和整数 k,请返回数组中第 k 个最大的元素。原创 2025-02-13 18:47:32 · 113 阅读 · 0 评论 -
LeetCode 236. 二叉树的最近公共祖先(python)
最近公共祖先被定义为:对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。如果我们要查找节点 5 和节点 1 的最近公共祖先,调用上述函数后,返回的结果是节点 3。• 如果 left 和 right 均不为空,说明 p 和 q 分别位于当前节点的左右子树中,因此当前节点就是它们的最近公共祖先。• 如果 left 为空,right 不为空,说明 p 和 q 都在右子树中,返回 right。原创 2025-02-11 17:40:54 · 205 阅读 · 0 评论