- 博客(122)
- 收藏
- 关注
原创 LeetCode 232: 用栈实现队列
使用栈实现队列的操作。MyQueue()push(x)xpop()peek()empty()队列的先进先出(FIFO)原则可以通过两个栈来模拟。栈 A 用于入队操作,栈 B 用于出队操作。
2025-02-15 23:39:38
282
原创 LeetCode 151. 反转字符串中的单词
通过去除多余空格、反转整个字符串以及反转每个单词,我们可以有效地实现字符串中单词顺序的反转。这种方法的时间复杂度为OnO(n)On,其中nnn是字符串的长度。优快云博客链接LeetCode 151. 反转字符串中的单词 - C语言题解。
2025-02-04 00:55:42
466
原创 LeetCode 349: 两个数组的交集
给定两个数组ransomNote和magazine,你需要判断ransomNote是否可以由magazine里的字符构成。每个字符可以使用一次。
2025-01-31 21:50:37
732
原创 LeetCode 242:有效的字母异位词
使用数组统计字母出现次数是一种高效的方法,时间复杂度为OnO(n)On。在主函数中,通过多组测试用例验证了代码的正确性。对于字符串操作问题,熟悉字符编码和数组操作尤为重要。希望这篇博客能帮助你理解 LeetCode 242 题的解决方案!💡。
2025-01-26 00:33:13
954
原创 LeetCode 面试题 02.07:链表相交
请你找出并返回它们相交的起始节点。如果两个链表没有相交,则返回。假设链表不包含环,并且相交后的所有节点为公共节点。给你两个单链表的头节点。
2025-01-24 01:11:16
370
原创 LeetCode 707 题:设计链表
get(index)indexvalvalindexvalindexindex我们可以使用链表来实现这些功能,链表的基本操作包括:在头部插入、尾部插入、按索引插入、删除元素。Onn我们使用虚拟头节点来简化边界条件的处理。
2025-01-19 00:01:35
546
原创 力扣第 54 题: 螺旋矩阵
要求从矩阵的左上角开始,按顺时针方向逐层遍历矩阵中的所有元素,并以一维数组的形式返回结果。解决,通过维护矩阵的边界(上下左右四个方向)来实现螺旋顺序的输出。力扣第 54 题 ——测试用例中定义了一个。
2025-01-16 22:49:27
893
原创 LeetCode 209 题:长度最小的子数组
LeetCode 第209题要求给定一个正整数数组nums和一个正整数target,找出具有最小长度的连续子数组,使得子数组的和大于或等于target。如果不存在这样的子数组,返回0。
2025-01-13 23:03:09
1023
原创 LeetCode 977 题:有序数组的平方
LeetCode 第977题要求给定一个按非降序排列的整数数组nums,返回每个数字的平方并按升序排列。
2025-01-13 22:46:47
1055
原创 LeetCode 第367题:有效的完全平方数
通过二分查找法,我们能够高效地判断一个数是否是完全平方数。该方法时间复杂度为 O(log n),适用于较大的整数输入。希望本篇文章能够帮助你掌握这道题目的解决方案!如果你有任何问题或改进意见,欢迎在评论区留言。
2025-01-10 00:08:02
940
原创 LeetCode 第34题:二分查找+扩展搜索
LeetCode 第34题要求在一个排序的数组中找到给定目标值的第一个和最后一个位置。如果目标值不存在,则返回 [-1, -1]。在本篇文章中,我将为大家提供详细的 C 语言解法,并逐行解释代码。
2025-01-09 00:15:13
500
原创 力扣第141题:环形链表 C语言解法
通过快慢指针的经典方法,我们能够在OnO(n)On时间内判断一个链表是否包含环,并且只需常数空间。相比于哈希表等方法,这种方法在空间复杂度上有明显优势。
2025-01-07 00:28:46
1062
原创 力扣第137题:只出现一次的数字 II C语言解法
这道题通过使用位运算的技巧(特别是与、异或和位清除操作),我们能够高效地找出只出现一次的数字。相比于哈希表等常规方法,位运算不仅能实现线性时间复杂度,而且能够节省空间,解决了题目中关于额外空间的限制。
2025-01-07 00:04:13
1104
原创 力扣第136题:只出现一次的数字 巧用异或
通过利用异或运算的特性,这道题可以在OnO(n)On时间复杂度内解决,而且只需要O1O(1)O1的空间复杂度。异或操作的特性使得我们能够快速找到只出现一次的元素,非常高效。
2025-01-06 23:46:15
746
原创 力扣第130题:被围绕的区域
本题通过深度优先搜索(DFS)对矩阵中与边界相连的'O'进行标记,确保它们不会被改变。通过这种方式,我们有效地解决了被围绕的区域修改问题。
2025-01-02 09:40:22
959
原创 力扣第129题:求根到叶子节点数字之和 - C语言解法
本题通过深度优先搜索(DFS)遍历二叉树的每一条路径,计算路径数字之和。该解法的时间复杂度为OnO(n)On,空间复杂度为OhO(h)Oh,其中nnn为节点数,hhh为树的高度。
2025-01-01 23:19:39
891
原创 力扣第123题:买卖股票的最佳时机 III
我们定义dp[k][i]表示在第i天,最多进行k次交易(买入和卖出一组算作一次交易)所获得的最大利润。k = 0:表示没有交易,利润为 0。k = 1:表示进行一次交易,最大利润。k = 2:表示进行两次交易,最大利润。
2024-12-30 09:50:12
1045
原创 力扣第122题:买卖股票的最佳时机 II
本题的解法采用了贪心算法,通过遍历股价数组,找出所有能够获得利润的买卖机会。每当股价上涨时,我们就进行卖出,并累积利润。最终,我们得到了最大利润。时间复杂度为OnO(n)On,空间复杂度为O1O(1)O1,是一个高效的解法。
2024-12-29 19:45:10
947
原创 力扣第120题:三角形最小路径和 - C语言解法
给定一个triangle,求从顶部到底部的最小路径和。每一步可以移动到当前行的相邻数字(即下一行的相邻数字),并且只能移动到下方的两个数字之一。
2024-12-27 10:12:43
677
原创 力扣第118题:杨辉三角 - C语言解法
给定一个非负整数numRows,生成杨辉三角的前numRows行。在杨辉三角中,每个数字是由上方两个数字相加得到的,第n行的第k个数字是由第n-1行的第k-1个和第k个数字相加而来,边界上的数字始终为1。
2024-12-26 16:36:30
1060
原创 力扣第116题:填充每个节点的下一个右侧节点指针 - C语言解法
给定一个完美二叉树,其每个节点都包含一个额外的next指针,该指针指向该节点的右侧邻居。如果不存在右侧邻居,则该指针应该为NULL。填充所有节点的next指针,并返回修改后的树。
2024-12-26 15:52:14
910
原创 力扣第115题:不同的子序列 — C语言解法
我们在代码中定义了常量,用于防止结果的溢出。每次更新dp数组时,我们都对当前值取模,确保它不会超出long long类型的最大值。1000000007# define MOD 1000000007 // 定义常用的模数。
2024-12-24 11:04:58
890
原创 力扣第112题:路径总和
给定一个二叉树和一个目标和,判断该树中是否存在从根节点到叶子节点的路径,使得路径上的节点值之和等于给定的目标和。是指没有子节点的节点。
2024-12-21 15:52:02
667
原创 力扣第110题:平衡二叉树
给定一个二叉树,判断它是否是高度平衡的二叉树。:一个二叉树,若每个节点的左右子树的高度差的绝对值不超过1,则该树是高度平衡的。
2024-12-20 09:57:57
518
原创 力扣第109题:将排序链表转换为二叉搜索树
为了快速找到链表的中间节点,我们可以使用快慢指针(快指针一次走两步,慢指针一次走一步),直到快指针到达链表末尾时,慢指针恰好位于链表的中间。:对于一棵二叉搜索树,中序遍历会生成一个升序排列的节点序列。因此,排序链表转换为二叉搜索树的关键是将链表的中间节点作为树的根节点。给定一个单链表,其中的元素已经按升序排列,要求将其转换为一个高度平衡的二叉搜索树。:我们可以利用递归的方式,选取链表的中间节点作为根节点,递归地构建左子树和右子树。:一个二叉搜索树,其中每个节点的左右子树的高度差的绝对值不超过1。
2024-12-19 09:36:36
853
原创 力扣 103 题:二叉树的锯齿形层序遍历
本题核心是层序遍历和方向控制的结合。函数通过队列实现遍历,并动态调整输出方向。在实现中需要特别注意内存分配和释放,避免内存泄漏。
2024-12-14 23:52:09
307
原创 力扣第99题 - 恢复二叉搜索树
Morris遍历是一种在二叉树上实现中序遍历的算法,不需要递归或栈辅助,能够达到 (O(1)) 空间复杂度。我们需要通过中序遍历找到这两个错误的节点,并交换它们的值恢复树。,请你恢复该二叉搜索树,使其满足二叉搜索树的定义。:(O(n)),因为数组需要存储所有节点。:(O(n)),因为需要一次中序遍历。给你二叉搜索树的根节点。
2024-12-11 10:14:58
484
原创 力扣第97题 - 交错字符串
给定三个字符串 、 和 ,判断 是否可以由 和 按某种顺序交错组成。这是一个经典的 动态规划 问题。我们需要判断是否可以通过选择 或 的字符,交错拼接出 。定义状态:状态转移方程:边界条件:复杂度分析时间复杂度:空间复杂度:
2024-12-10 10:22:17
940
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人