- 博客(21)
- 收藏
- 关注
原创 20.颠倒二进制位和位1的个数-leetcode
颠倒给定的 32 位有符号整数的二进制位。9641761921073741822(1)解题思路分治+位掩码合并(经典“蝴蝶”反转)核心观察:反转 = 不断交换相邻块。步骤(块长依次为 1→2→4→8→16):① 交换所有相邻 1 位② 交换所有相邻 2 位③ 交换所有相邻 4 位④ 交换所有相邻 8 位⑤ 交换相邻 16 位每一步都用掩码保留一半、移位后再合并,共 5 条位运算语句。时间复杂度 O(1),常数比循环更小。(2)代码(c)(3)总结。
2025-11-30 23:46:29
684
原创 19.第二高的薪水和第N高的薪水-LeetCode
Employee表:id 是这个表的主键。表的每一行包含员工的工资信息。查询并返回Employee表中第二高的薪水。如果不存在第二高的薪水,查询应该返回。查询结果如下例所示。Employee 表:Employee 表:(1)解题思路。
2025-11-24 23:39:33
577
原创 18.环形链表和二叉树的前序遍历-LeetCode
给你一个链表的头节点head,判断链表中是否有环。如果链表中有某个节点,可以通过连续跟踪next指针再次到达,则链表中存在环。为了表示给定链表中的环,评测系统内部使用整数pos来表示链表尾连接到链表中的位置(索引从 0 开始)。pos。仅仅是为了标识链表的实际情况。如果链表中存在环,则返回true。否则,返回false。true链表中有一个环,其尾部连接到第二个节点。true链表中有一个环,其尾部连接到第一个节点。false链表中没有环。-1(1)解题思路初始化。
2025-11-16 22:32:26
774
原创 17.路径总和 和 买卖股票的最佳时期-LeetCode
给你二叉树的根节点root和一个表示目标和的整数targetSum。判断该树中是否存在的路径,这条路径上所有节点值相加等于目标和targetSum。如果存在,返回true;否则,返回false。是指没有子节点的节点。true等于目标和的根节点到叶节点路径如上图所示。false树中存在两条根节点到叶子节点的路径:(1 --> 2): 和为 3(1 --> 3): 和为 4不存在 sum = 5 的根节点到叶子节点的路径。false由于树是空的,所以不存在根节点到叶子节点的路径。
2025-11-09 13:09:17
603
原创 16.平衡二叉树和二叉树的最小深度-LeetCode
给定一个二叉树,判断它是否是 平衡二叉树truefalseroot = []true[0, 5000](1)解题思路递归流程① 当前空 → 高度 0。② 递归左子树,若得 -1 → 本层直接返回 -1。③ 递归右子树,若得 -1 → 同上。④ 左右高度差> 1→ 返回 -1。⑤ 否则返回。递归函数设计 (height返回值:当前子树的高度;返回值:子树已不平衡,作为「错误标志」向上层立即剪枝。(2)代码(c)(3)总结空树返回 0,不是 -1。高度差判断用abs;
2025-11-02 13:16:32
257
原创 15.二叉树的最大深度和将有序数组转换为二叉搜索树-LeetCode
对于任意一个节点node如果,深度为0。否则,深度为左右子树深度的较大值加 1。
2025-10-26 17:49:00
363
原创 14.删除重复的电子邮箱和上升的温度-Leetcode
表:Personid 是该表的主键列(具有唯一值的列)。该表的每一行包含一封电子邮件。电子邮件将不包含大写字母。编写解决方案所有重复的电子邮件,只保留一个具有最小id的唯一电子邮件。(对于 SQL 用户,请注意你应该编写一个DELETE语句而不是SELECT语句。(对于 Pandas 用户,请注意你应该直接修改Person表。运行脚本后,显示的答案是Person表。驱动程序将首先编译并运行您的代码片段,然后再显示Person表。Person表的最终顺序。返回结果格式如下示例所示。
2025-10-18 01:25:55
628
原创 13.组合两个表和从不订购的客户-LeetCode练习
表:Person| 列名 | 类型 |personId 是该表的主键(具有唯一值的列)。该表包含一些人的 ID 和他们的姓和名的信息。表:Address| 列名 | 类型 |addressId 是该表的主键(具有唯一值的列)。该表的每一行都包含一个 ID = PersonId 的人的城市和州的信息。编写解决方案,报告Person表中每个人的姓、名、城市和州。如果personId的地址不在Address表中,则报告为null。以返回结果表。
2025-10-09 18:14:39
765
原创 12.超过经理收入的员工和查找重复的电子邮箱-LeetCode
Employeeid 是该表的主键(具有唯一值的列)。该表的每一行都表示雇员的ID、姓名、工资和经理的ID。编写解决方案,找出收入比经理高的员工。以返回结果表。结果格式如下所示。Employee 表:Joe 是唯一挣得比经理多的雇员。(1)解题思路连接数据库用自连接查出 salary > manager.salary 的员工姓名把结果逐行打印(或返回)关闭连接(2)代码(3)总结用自连接把员工和对应经理放在同一行,再用过滤。
2025-10-01 23:34:17
468
原创 11.验证回文串和只出现一次的数字-LeetCode
如果在将所有大写字符转换为小写字符、并移除所有非字母数字字符之后,短语正着读和反着读都一样。则可以认为该短语是一个。字母和数字都属于字母数字字符。给你一个字符串s,如果它是,返回true;否则,返回false。true"amanaplanacanalpanama" 是回文串。false"raceacar" 不是回文串。s = " "true在移除非字母数字字符之后,s 是一个空字符串 ""。由于空字符串正着反着读都一样,所以是回文串。
2025-09-18 18:23:59
263
原创 10.杨辉三角I 和 ‖-LeetCode
给定一个非负整数 numRows生成「杨辉三角」的前 numRows行。在「杨辉三角」中,每个数是它左上方和右上方的数的和。[[1]](1)解题思路先为triangle申请numRows个int *的指针空间;对第i行(0-based),申请i+1个int的空间;每行首尾置 1,中间元素;最终返回triangle指针,并通过和把行数和每行列数回传给调用者。(2)代码(c)(3)总结利用到了指针空间,中间利用累加的逻辑关系来解决问题。
2025-09-10 17:05:44
470
原创 9.相同的树和对称二叉树-leetCode
给你两棵二叉树的根节点p和q,编写一个函数来检验这两棵树是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。truefalsefalse[0, 100]要判断两棵二叉树是否相同,我们需要:如果两棵树都为空,则相同如果其中一棵为空而另一棵不为空,则不同如果两棵树的根节点值不同,则不同递归比较左子树和右子树是否相同使用递归方法,先处理边界条件,然后比较当前节点的值,最后递归比较左右子树。
2025-08-24 13:38:25
325
原创 8.合并两个有数数组和二叉树的中序遍历-leetCode
给你两个按排列的整数数组nums1和nums2,另有两个整数m和n,分别表示nums1和nums2中的元素数目。请你nums2到nums1中,使合并后的数组同样按排列。最终,合并后数组不应由函数返回,而是存储在数组nums1中。为了应对这种情况,nums1的初始长度为m + n,其中前m个元素表示应合并的元素,后n个元素为0,应忽略。nums2的长度为n。需要合并 [1,2,3] 和 [2,5,6]。合并结果是 [,2,,5,6] ,其中斜体加粗标注的为 nums1 中的元素。[1]
2025-08-15 20:44:25
296
原创 7.爬楼梯和删除排序链表中重复元素的练习-leetCode
这是一个已排序链表去重的问题,由于链表已经是升序排列,重复元素一定相邻,只需一次遍历即可。你有多少种不同的方法可以爬到楼顶呢?删除所有重复的元素,使每个元素只出现一次。1. 1 阶 + 1 阶 + 1 阶。利用斐波那契数列来解决逻辑叠加问题。(表示地面,有一种方法不动)给定一个已排序的链表的头。有两种方法可以爬到楼顶。1. 1 阶 + 1 阶。有三种方法可以爬到楼顶。2. 1 阶 + 2 阶。3. 2 阶 + 1 阶。
2025-08-10 20:46:55
280
原创 6.二进制求和和x的平方根的练习-leetCode
给你两个二进制字符串a和b,以二进制字符串的形式返回它们的和。"100""10101"b'0''1'"0"(1)解题思路:从两个字符串的末尾开始,逐位处理。:对每一位,将两个字符转换为数字(0或1),加上前一位的进位,计算当前位的和以及新的进位。:如果其中一个字符串处理完后仍有剩余位,继续处理剩余位,同时考虑进位。:如果所有位处理完后仍有进位,将其添加到结果的最前面。:由于我们是从后向前处理,所以结果需要反转。(2)代码(c)(3)总结。
2025-08-03 21:36:02
441
原创 4.找出字符串中匹配项的下标和搜索插入位置练习-leetCode
如果 needle 的所有字符都匹配,返回当前起始位置。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。每次找到 nums[mid] >= target 时,记录当前 mid 作为候选位置,并继续向左搜索更小的位置。插入位置的定义:当目标值 target 不存在时,返回它应该插入的位置 ans,使得插入后数组仍然有序。能熟练使用双指针遍历和内外层循环方法,代码逻辑更加严谨,代码书写能力也随之增强。字符串的第一个匹配项的下标(下标从 0 开始)。第一个匹配项的下标是 0 ,所以返回 0。
2025-07-20 23:34:18
330
原创 3.移除有序数组中的重复项和移除元素的练习-leetCode
/ 它以不等于 val 的值排序。你的函数应该返回 k = 5,并且 nums 中的前五个元素为 0,0,1,3,4。// 长度正确的预期答案。// 排序 nums 的前 k 个元素。你在返回的 k 个元素之外留下了什么并不重要(因此它们并不计入评测)。你在返回的 k 个元素之外留下了什么并不重要(因此它们并不计入评测)。你的函数函数应该返回 k = 2, 并且 nums。来记录唯一元素的个数,并作为新数组的索引。
2025-06-02 20:07:13
944
原创 2.有效的括号和合并两个有序链表的练习-leetcode
如果遇到右括号(')', '}', ']'),检查栈顶元素是否匹配。遍历结束后,如果栈为空,则所有括号匹配正确,返回。新链表是通过拼接给定的两个链表的所有节点组成的。,如果遇到左括号('(', '{', '['),将其压入栈中。来简化操作,然后逐个比较并连接节点,直到其中一个链表为空。利用了栈的知识,遍历数组并检查是否符合条件,完成解答。函数用于创建一个新的链表节点,并初始化其值和指针。最后,将剩余的节点连接到结果链表中。函数用于打印链表中的所有节点值。利用了链表的知识,完成解答。,判断字符串是否有效。
2025-05-25 19:25:25
294
原创 1.罗马数字转整数和最长公共前缀的练习-leetcode
2. 取数组中的第一个字符串作为初始的最长公共前缀。3. 遍历数组中的其他字符串,逐个字符地与当前的最长公共前缀进行比较,如果发现不匹配的字符,则缩短最长公共前缀。设置函数findCharIndex用于查找当前罗马字符在数组中的位置,然后找出整数数组中该位置的数字,就是romanToInt函数,在该函数中有两种情况,一种是IV=4,还有一种就是正常顺序,直接利用循环相加即可。数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 1 得到的数值 4。通常情况下,罗马数字中小的数字在大的数字的右边。
2025-05-18 20:11:23
335
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅