自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(32)
  • 收藏
  • 关注

原创 根据中序和后序遍历构建二叉树

三、解题思路四、总结这段代码是后序 + 中序构建二叉树的高效实现,核心是利用后序遍历的特性和哈希表优化,递归时 “先右后左” 的顺序是理解的关键。

2025-12-09 19:53:58 254

原创 根据前序和中序遍历构建二叉树

这段代码的核心是利用前序 / 中序的遍历特性,通过递归逐层拆解子树,最终还原整个二叉树。

2025-12-09 19:35:04 254

原创 从不订购的客户

从customers(客户表)中找出那些从未在orders(订单表)中留下订单记录的客户,最终只只显示这些客户的姓名。逻辑:如果客户表中的id(客户唯一标识)不在子查询得到的 “有订单的客户 ID 列表” 中,就会被选中。排除这些 ID”,精准筛选出从未下单的客户,适合用于 “挖掘潜在客户”“分析客户活跃度” 等场景。作用:从 “订单表”(orders)中查询所有订单对应的customerid(客户 ID)该表的每一行都表示订单的 ID 和订购该订单的客户的 ID。该表的每一行都表示客户的 ID 和名称。

2025-10-10 07:41:40 401

原创 组合两个表

Address 表:存 “人的地址信息”,关键列是 PersonId(对应Person表的 ID,确保 “101” 的地址属于张三)、City(城市,比如 “Beijing”)、State(省份 / 州,比如 “Hebei”)。Person 表:存 “人的基础信息”,关键列是 PersonId(每个人的唯一 ID,比如 “101” 代表张三)、FirstName(名,比如 “San”)、LastName(姓,比如 “Zhang”)。| 列名 | 类型 |

2025-10-10 07:28:20 763

原创 查找重复的邮箱

(4)子查询的结果会形成一个临时表,包含两列:Email(邮箱地址)和 num(出现次数),并通过 as statistic 给这个临时表起了个别名。(3)count(Email) as num 表示计算每个分组中邮箱地址的出现次数,并将这个计数结果命名为 num。(2)where num > 1 表示只选择那些出现次数(num)大于 1 的记录。(1)这部分是一个子查询,它的功能是统计每个邮箱地址在表中出现的次数。(3)最终返回这些符合条件的邮箱地址(Email)id 是该表的主键(具有唯一值的列)。

2025-10-01 21:19:20 265

原创 超过经理收入的员工

将 Employee 表自连接,分别用别名 a 和 b 表示(a 代表员工,b 代表经理)意思是:员工 a 的经理 ID 等于经理 b 的 ID(即 b 是 a 的直接上级)a.Salary > b.Salary 这个条件用于筛选出那些工资高于自己经理的员工。a.ManagerId = b.Id 这个条件用来建立员工和其直接经理的关联关系。该表的每一行都表示雇员的ID、姓名、工资和经理的ID。也就是员工 a 的薪资要大于其经理 b 的薪资。id 是该表的主键(具有唯一值的列)。建立员工与经理的关联关系。

2025-10-01 21:13:49 257

原创 C语言实现回文判断

3.交换律和结合律:异或运算的顺序不影响结果(a ^ b ^ c = a ^ c ^ b = (a ^ b) ^ c)ans 用于累计异或的结果,初始化为 0(利用异或的「恒等性」,0 作为初始值不影响后续计算)。,除了某个元素只出现一次以外,其余每个元素均出现两次。2.恒等性:任何数和 0 异或,结果还是这个数(a ^ 0 = a)1.自反性:任何数和自身异或,结果为 0(a ^ a = 0)循环结束后,ans 的值就是数组中「只出现一次的元素」。nums:整数数组的指针(待处理的数组)

2025-09-21 08:31:40 208

原创 验证回文串

该代码的核心思路(预处理 + 双指针对比)是回文问题的经典解法。

2025-09-21 08:21:02 265

原创 杨辉三角*2*

填充规则:与杨辉三角的特性一致 —— 第i行的首元素(j=0)和尾元素(j=i)为 1,中间元素j(1≤j<i)等于上一行(i-1)的j-1和j元素之和。c[MX][MX] 是全局二维数组,用于存储预计算的杨辉三角所有行数据(c[i] 表示第i行的元素)。// 返回预计算好的第rowIndex行的首地址。rowIndex:需要获取的行的索引(0≤rowIndex≤33,受MX限制)。

2025-09-13 00:16:42 644

原创 杨辉三角**

这段代码通过动态内存分配创建二维数组,结合杨辉三角的特性(首尾为 1,中间元素为上两行之和),逐行填充数据,最终生成指定行数的杨辉三角,并通过输出参数返回结果的结构信息(行数和每行元素数)。内层循环 j 遍历每行的中间元素(1 到 i-1),这些元素的值等于上一行(i-1)中左侧元素(j-1)和正上方元素(j)的和(核心规则)。杨辉三角的第 i 行(从 0 开始计数)有 i+1 个元素(例如第 0 行 1 个元素,第 1 行 2 个元素,以此类推)。// 填充每行中间的元素(j从1到i-1)

2025-09-13 00:06:03 813

原创 二叉树的最大深度

这段代码通过递归分解问题:将整棵树的深度转化为「左子树深度」和「右子树深度」的最大值加 1,最终通过终止条件(空节点返回 0)回溯得到结果。

2025-09-12 23:57:19 353

原创 对称二叉树

1.核心逻辑:对称二叉树的关键是“根节点的左子树与右子树互为镜像”。镜像需满足:结构对称(对应位置节点同时存在或同时不存在),且对应节点值相等。2.函数分工:isSymmetric(主函数):直接判断根节点的左子树与右子树是否互为镜像,通过调用isSameTree实现。isSameTree(辅助函数):判断两棵树是否互为镜像(非完全相同)。

2025-08-24 22:08:05 388

原创 *相同的数*

给你两棵二叉树的根节点p和q,编写一个函数来检验这两棵树是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。

2025-08-24 21:58:10 238

原创 二叉树的中序遍历

二叉树的根节点指针(struct TreeNode 是二叉树节点的结构体,包含 val(节点值)、left(左孩子指针)、right(右孩子指针))。步骤 3:访问根节点的值(存入结果数组),对应中序遍历的 “根”;步骤 2:当左孩子为 NULL 时,栈顶是 NULL,需要退栈(top--),回到上一个有效节点(即当前子树的根节点)。这段代码是用迭代法(非递归) 实现二叉树的中序遍历(左 - 根 - 右),并返回遍历结果。:输出参数,用于返回遍历结果数组的长度(即二叉树的节点总数)。

2025-08-18 09:21:21 433

原创 合并两个有序数组

给你两个按排列的整数数组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-18 09:10:15 358

原创 删除排序列表中的重复元素

删除有序链表中连续重复的节点,仅保留每个元素的一个副本。

2025-08-11 00:48:14 401

原创 **爬楼梯**

这段代码通过迭代优化的方式,高效计算了爬楼梯问题的解。

2025-08-11 00:40:26 257

原创 x的平方根

这个宏定义了INT_MAX的平方根的整数部分,用于限制二分查找的右边界,避免计算m*m时发生整数溢出(如果m太大,m*m可能超过INT_MAX,导致结果错误)。若x较小(≤SQRT_INT_MAX²),right取x + 1(因为平方根不会超过x本身,如x=4的平方根最大是 2,right设为 5 即可覆盖范围);left是满足left² ≤ x的最大整数(因为再大一点的right已经满足right² > x),因此left就是x的平方根的整数部分。right² > x(右边界始终是不满足条件的解)。

2025-08-03 22:22:41 371

原创 二进制字符串相加

这段代码通过字符串反转简化了二进制加法的低位处理。

2025-08-03 22:15:09 293

原创 最后一个单词的长度

该函数通过两次反向遍历:1.跳过末尾空格,定位到最后一个单词的末尾。2.从末尾向前找到单词的开头,计算长度。

2025-07-28 08:22:56 274

原创 ---加一---

该函数通过模拟手工加法的进位过程,处理了任意长度的整数加一操作。

2025-07-28 08:15:24 239

原创 搜索插入位置

该代码通过二分查找高效实现了查找或插入位置的功能,适用于需要频繁插入元素并保持有序性的数据结构(如有序数组)。

2025-07-20 23:12:22 353

原创 找出字符串中第一个匹配的下标

给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串的第一个匹配项的下标(下标从 0 开始)。如果 needle 不是 haystack 的一部分,则返回 -1。示例 1:输入:输出:0解释:"sad" 在下标 0 和 6 处匹配。第一个匹配项的下标是 0 ,所以返回 0。示例 2:输入:输出:-1解释:"leeto" 没有在 "leetcode" 中出现,所以返回 -1。

2025-07-20 23:03:30 346

原创 移除元素。

这段代码采用了双指针算法。在不使用额外空间的情况下,将数组中所有等于val的元素移除,并返回移除后数组的新长度(原数组前k个元素为有效结果)。

2025-06-02 21:07:20 514

原创 删除有序数组的重复项

这段代码在不使用额外空间的情况下,将有序数组中所有重复的元素移除,仅保留每个元素的一个副本,并返回去重后数组的新长度。

2025-06-02 20:50:34 1424

原创 合并两个有序链表

将两个升序链表合并为一个新的链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。[][0]l2。

2025-05-25 20:59:46 224

原创 有效的括号

给定一个只包括'('')''{''}''['']'的字符串s,判断字符串是否有效。s = "()"truetrues = "(]"falses = "([])"true仅由括号'()[]{}'组成。

2025-05-25 20:31:16 249

原创 最长公共前缀

核心思路是以第一个字符串为基准,逐个字符对比其他字符串的对应位置,找到第一个不匹配的位置,从而确定公共前缀。

2025-05-18 19:31:04 375

原创 罗马数字转整数

此代码通过比较相邻字符数值的核心逻辑,实现了罗马数字到整数的转换。

2025-05-18 19:18:15 1583

原创 两数之和和回文数

1.函数定义:函数接收一个整数数组nums、数组长度numsSize、目标和target,以及一个指向整数的指针returnSize用于返回结果数组的长度。4.条件判断:对于每对数nums[i]和nums[j],检查它们的和是否等于目标值target。5.未找到结果处理:如果遍历完所有数对都没有找到符合条件的组合,释放之前分配的内存,返回NULL表示无解。解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1]。1.函数定义:函数接收一个整数x,返回一个布尔值表示x是否为回文数。

2025-05-11 22:30:55 425

原创 C语言中的三种循环语句的使用及区别:for循环,while循环,do...while循环

(1)初始化:首先执行初始化表达式,通常用于设置循环控制变量的初始值,且仅在循环开始前执行一次。若不成立,则结束循环。while循环:先判断条件是否成立,若成立则执行循环体,执行完后再次判断条件,直到条件不成立为止。(2)条件判断:然后评估条件表达式,如果值为真true(非0),则执行循环体。(4)迭代更新:执行完循环体后,再执行迭代表达式,通常用于更新循环控制变量。(5)重复过程:重复执行步骤(2-4),直到条件为假(值为flase),循环结束。(3)循环体执行:如果条件为真,执行循环体中的代码。

2024-11-03 12:43:34 3811 4

原创 二进制,八进制,十六进制与十进制的转变

只使用两个数字,0和1在编程语言中常以0b或0B开头。

2024-10-27 09:22:00 666

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除