- 博客(44)
- 收藏
- 关注
原创 从中序与后序遍历序列构造二叉树解题思路
思路:与从前序与中序遍历序列构造二叉树思路大同小异,只是将前序换成了后序,后序根结点为后序数组最后一个;是同一棵树的后序遍历,请你构造并返回这颗。主要后序遍历根结点为后序数组最后一位;是二叉树的中序遍历,
2025-12-07 23:49:05
279
原创 从前序与中序遍历序列构造二叉树解题思路
思路:将每个结点当做根结点去处理,通过前序遍历,中序遍历得到左右子树长度,以及左右子树两种遍历结果数组,利用递归,创造出树(主要看代码注解);总结:将每个结点当做根节点处理;,请构造二叉树并返回其根节点。
2025-12-07 23:44:36
267
原创 位1的个数解题思路
编写一个函数,获取一个正整数的二进制形式并返回其二进制表达式中 设置位 的个数(也被称为。总结:知道如何将十进制数转化为二进制数;中,共有 30 个设置位。中,共有 1 个设置位。
2025-12-02 09:44:27
179
原创 颠倒的二进制位解题思路
思路:创建int a[32] 数组储存二进制,在将n转化时就倒序储存,注意要有32为,空位补零;颠倒给定的 32 位有符号整数的二进制位。总结:注意二进制必须有32位,空位补零;
2025-12-02 09:40:35
177
原创 第N高的薪水解题思路
思路:与第二高的薪水大同小异;因为索引是从0开始,所以应该是limit N-1,1;但是limit里面不能进行运算,所以set N = N-1;id 是该表的主键(列中的值互不相同)。该表的每一行都包含有关员工工资的信息。个不同工资,查询结果应该为。总结:注意索引从0开始;编写一个解决方案查询。查询结果格式如下所示。
2025-12-02 09:35:33
318
原创 第二高的薪水解题思路
如果第一个参数的表达式 expression 为 NULL,则返回第二个参数的备用值(此题中是返回null)。思路:根据salary倒序排列后,利用分页查询limit 1,1,以及IFNULL函数;总结:此题考察对分页查询及IFNULL函数的运用;如果不存在第二高的薪水,查询应该返回。expression是table的时候要加括号。表的每一行包含员工的工资信息。id 是这个表的主键。去重一样的Salary。查询结果如下例所示。
2025-12-02 09:29:04
241
原创 环形链表解题思路
指针再次到达,则链表中存在环。为了表示给定链表中的环,评测系统内部使用整数。快慢指针法:当快指针追上慢指针(套圈)时说明有环,否则无环·。来表示链表尾连接到链表中的位置(索引从 0 开始)。如果链表中有某个节点,可以通过连续跟踪。链表中有一个环,其尾部连接到第二个节点。链表中有一个环,其尾部连接到第一个节点。检测是否有环快慢指针是一个好方法;仅仅是为了标识链表的实际情况。,判断链表中是否有环。给你一个链表的头节点。
2025-11-16 22:13:49
326
原创 买股票的最佳时机解题思路
设max_p为最大利润,初始为0,min_p为最小股票价格,初始为prise[0],循环比较min_p与prise[i]的值,大于则min_p = prise[i];小于则比较max_p 与 prise[i] - min_p,小于则max_p = prise[i] - min_p;在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5。同时,你不能在买入前卖出股票。确保买入的最小值,卖出利润最大,判断min_p 与 当前价格关系;
2025-11-09 20:14:16
466
原创 路径总和解题思路
最后的 return hasPathSum(root -> left ,targetSum) || hasPathSum(root -> right,targetSum);每次递归用targetSum减去当前节点的val值,当左右子树都为空时判断targetSum是否为零;返回左 或上(||) 右子树的递归结果,当有true返回时根据或运算true会一直返回下去;不存在 sum = 5 的根节点到叶子节点的路径。由于树是空的,所以不存在根节点到叶子节点的路径。等于目标和的根节点到叶节点路径如上图所示。
2025-11-09 20:01:56
202
原创 二叉树最小深度解题思路
注:最小深度是从根节点到最近叶子节点的最短路径上的节点数量,所以要考虑左右子树有一个为空的情况,不能直接返回0;最小深度是从根节点到最近叶子节点的最短路径上的节点数量。2.左右子树有一个为空 返回深度(其中一个深度为0)加一。3.左右子树都不为空 返回最小深度加一。给定一个二叉树,找出其最小深度。叶子节点是指没有子节点的节点。1.左右子树都为空 返回1。
2025-11-02 23:05:50
237
原创 将有序数组转换为二叉搜索树解题思路
数组中间靠左(长度为偶数时)作为根节点,利用二分思想进行递归,实现小在左,大在右;根据二分法,将数组的中间值作为根结点接在二叉树上,实现左小右大;[1,null,3] 和 [3,1] 都是高度平衡二叉搜索树。排列,请你将其转换为一棵 平衡 二叉搜索树。
2025-10-26 20:20:57
205
原创 上升的温度解题思路
条件:a.Temperature < b.Temperature && datediff(b.recordDate,a.recordDate) = 1;DATE_ADD(date, INTERVAL expr type) 返回一个日期/时间值加上一个时间间隔expr后的时间值。DAY(date) 获取指定date的日期。编写解决方案,找出与之前(昨天的)日期相比温度更高的所有日期的。该表包含特定日期的温度信息。
2025-10-16 19:46:02
400
原创 删除重复的电子邮箱解题思路
a.id > b.id 既保证了只会删除重复的email,又保证保留id最小的;我们保留最小的Id = 1。条件:a.email = b.email && a.id > b.id;该表的每一行包含一封电子邮件。驱动程序将首先编译并运行您的代码片段,然后再显示。(对于 Pandas 用户,请注意你应该直接修改。(对于 SQL 用户,请注意你应该编写一个。所有重复的电子邮件,只保留一个具有最小。id 是该表的主键列(具有唯一值的列)。将表内连接,类似于select语句,运行脚本后,显示的答案是。
2025-10-16 19:40:30
235
原创 从不订购的客户解题思路
先将Orders表左联结在Customers表上,再根据customerId is null 为条件筛选;customerId 是 Customers 表中 ID 的外键( Pandas 中的连接键)。该表的每一行都表示订单的 ID 和订购该订单的客户的 ID。该表的每一行都表示客户的 ID 和名称。在 SQL 中,id 是该表的主键。在 SQL 中,id 是该表的主键。找出所有从不点任何东西的顾客。
2025-10-09 16:24:46
335
原创 组合两个表解题思路
地址表中没有 personId = 1 的地址,所以它们的城市和州返回 null。该表的每一行都包含一个 ID = PersonId 的人的城市和州的信息。(2)右联结(right join),联结结果保留右表的全部数据。(1)左联结(left join),联结结果保留左表的全部数据。(3)内联结(inner join),取两表的公共数据。addressId 是该表的主键(具有唯一值的列)。personId 是该表的主键(具有唯一值的列)。该表包含一些人的 ID 和他们的姓和名的信息。
2025-10-09 16:19:30
742
原创 查找重复的电子邮件解题思路
编写解决方案来报告所有重复的电子邮件。请注意,可以保证电子邮件字段不为 NULL。此表的每一行都包含一封电子邮件。电子邮件不包含大写字母。id 是该表的主键(具有唯一值的列)。先email分组,再count判断;a@b.com 出现了两次。
2025-09-30 21:54:40
244
原创 超过经理收入的员工解题思路
该表的每一行都表示雇员的ID、姓名、工资和经理的ID。一表二用,将第一张表中的员工与第二张表对应经理进行比较。id 是该表的主键(具有唯一值的列)。编写解决方案,找出收入比经理高的员工。Joe 是唯一挣得比经理多的雇员。
2025-09-30 21:40:24
195
原创 只出现一次的数字解题思路
除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。你必须设计并实现线性时间复杂度的算法来解决此问题,且该算法只使用常量额外空间。异或运算:相同为0,相异为1;
2025-09-20 17:07:19
244
原创 验证回文串解题思路
如果在将所有大写字符转换为小写字符、并移除所有非字母数字字符之后,短语正着读和反着读都一样。则可以认为该短语是一个。"amanaplanacanalpanama" 是回文串。在移除非字母数字字符之后,s 是一个空字符串 ""。总结:要利用ASCII将字符串转换,最后循环验证即可。由于空字符串正着反着读都一样,所以是回文串。先利用ASCII转换给定的字符串,再进行判断。"raceacar" 不是回文串。字母和数字都属于字母数字字符。
2025-09-20 17:02:50
221
原创 杨辉三角解题思路
杨辉三角性质:在「杨辉三角」中,每个数是它左上方和右上方的数的和。申请一个数组(大数组),里面的存每个元素都是一个数组(小数组)。在「杨辉三角」中,每个数是它左上方和右上方的数的和。定义一个二维数组,根据性质即可表示出来。生成「杨辉三角」的前 numRows。给定一个非负整数 numRows。注意如何去定义一个二维数组。单独申请每个小数组的大小。
2025-09-11 16:20:21
237
原创 相同的树解题思路
如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。,编写一个函数来检验这两棵树是否相同。想要比较两颗树,先要知道如何遍历二叉树。给你两棵二叉树的根节点。
2025-08-24 20:01:50
247
原创 合并两个有序数组解题思路
注意,因为 m = 0 ,所以 nums1 中没有元素。nums1 中仅存的 0 仅仅是为了确保合并结果可以顺利存放到 nums1 中。,5,6] ,其中斜体加粗标注的为 nums1 中的元素。最终,合并后数组不应由函数返回,而是存储在数组。需要合并 [1,2,3] 和 [2,5,6]。需要合并的数组是 [] 和 [1]。为避免数据的覆盖,所以从末位开始排序。个元素表示应合并的元素,后。需要合并 [1] 和 []。中,使合并后的数组同样按。合并结果是 [1]。合并结果是 [1]。
2025-08-17 22:43:47
182
原创 删除排序链表中的重复元素解题思路
给定一个已排序的链表的头 head , 删除所有重复的元素,使每个元素只出现一次。返回 已排序的链表。//释放重复节点内存。输入:head = [1,1,2,3,3]链表中节点数目在范围 [0, 300] 内。输入:head = [1,1,2]题目数据保证链表已经按升序 排列。要记得释放重复节点的内存;输出:[1,2,3]
2025-08-10 22:58:57
137
原创 爬楼梯解题思路
探索到规律之后就很清晰了,还可以用递归函数的方法,但运行时间过长。你有多少种不同的方法可以爬到楼顶呢?1. 1 阶 + 1 阶 + 1 阶。有两种方法可以爬到楼顶。1. 1 阶 + 1 阶。有三种方法可以爬到楼顶。2. 1 阶 + 2 阶。3. 2 阶 + 1 阶。
2025-08-10 22:54:43
233
原创 x的平方根解题思路
i*i <= x && (i+1)*(i+1) > x ,满足条件就返回i,主要i为long型。8 的算术平方根是 2.82842..., 由于返回类型是整数,小数部分将被舍去。不允许使用任何内置指数函数和算符,例如。由于返回类型是整数,结果只保留。
2025-08-03 20:14:55
173
原创 二进制求和解题思路
先从两字符串末位开始进行加法运算,先转化为数字型,再将计算结果对2求余并储存到字符数组中;for循环内为核心算法,展示了如何得到相加后的结果;return的处理是为了去除无效零。,以二进制字符串的形式返回它们的和。给你两个二进制字符串。
2025-08-03 20:11:19
254
原创 加一解题思路
这些数字按从左到右,从最高位到最低位排列。3.所有数字全是9(创建新更大的数组)加 1 后得到 4321 + 1 = 4322。2.数字是9(不全为9),变为0。加 1 后得到 123 + 1 = 124。将大整数加 1,并返回结果的数字数组。因此,结果应该是 [4,3,2,2]。加 1 得到了 9 + 1 = 10。因此,结果应该是 [1,2,4]。分好类,弄清什么情况要创建新数组。因此,结果应该是 [1,0]。输入数组表示数字 4321。输入数组表示数字 123。输入数组表示数字 9。
2025-07-25 13:28:45
315
原创 最后一个单词的长度解题思路
从字符串最后一个字符开始计算,当遇到空格时,如果长度不为零则结束;,由若干单词组成,单词前后用一些空格字符隔开。是指仅由字母组成、不包含任何空格字符的最大子字符串。最后一个单词是长度为 6 的“joyboy”。最后一个单词是“World”,长度为 5。最后一个单词是“moon”,长度为 4。
2025-07-25 13:19:13
261
原创 搜索插入位置解题思路
1.普通解法:当target<=nums[ i ]时返回 i;(注意numsSize==1 和 i == numsSize - 1 时的情况)给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。二分法是一种很重要的查找方法,需要熟练掌握;请必须使用时间复杂度为。2.二分法:见代码;
2025-05-29 20:24:09
218
原创 找出字符串中第一个匹配项的下标解题思路
设k为判别标准,初值为-1;用for循环从头开始寻找haystack中与needle[0]相同的单词的下标并赋值给k;再从当前开始依次将haystack与needle中的字符比较,直到将needle遍历完,如果全部匹配则return k,否则 k=-1;(如果haystack提前遍历结束则k=-11);"leeto" 没有在 "leetcode" 中出现,所以返回 -1。字符串的第一个匹配项的下标(下标从 0 开始)。第一个匹配项的下标是 0 ,所以返回 0。"sad" 在下标 0 和 6 处匹配。
2025-05-27 20:47:55
215
原创 移除元素解题思路
/ 它以不等于 val 的值排序。你的函数应该返回 k = 5,并且 nums 中的前五个元素为 0,0,1,3,4。用k记录长度,将nums中元素逐个与val比较,不同则保留同时k++,如相同则舍去。// 长度正确的预期答案。// 排序 nums 的前 k 个元素。你在返回的 k 个元素之外留下了什么并不重要(因此它们并不计入评测)。你在返回的 k 个元素之外留下了什么并不重要(因此它们并不计入评测)。你的函数函数应该返回 k = 2, 并且 nums。如果所有的断言都通过,你的解决方案将会。
2025-05-25 18:36:53
306
原创 删除有序数组中的重复项解题思路
给你一个 非严格递增排列 的数组 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-05-25 18:08:46
179
原创 合并两个有序列表解题思路
新链表是通过拼接给定的两个链表的所有节点组成的。逐个比较,连接列表,多个if语句分类讨论;此方法思路清晰易懂,但空间复杂度较高,内存消耗较大;将两个升序链表合并为一个新的。
2025-05-24 18:36:09
216
原创 有效括号解题思路(不用栈)
定义一个数组a用来存放左括号,遍历字符串数组,如果是左括号,则存入数组a,如果是右括号则与数组a中最后一位进行比较看是否是同一类,是则通过k--使数组a的最后一位“溢出”,如果不是则输出false;当所有括号都匹配成功则输出true;给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。每个右括号都有一个对应的相同类型的左括号。左括号必须用相同类型的右括号闭合。输入:s = "()[]{}"输入:s = "([])"输入:s = "()"输入:s = "(]"
2025-05-20 20:20:43
268
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅