![](https://img-blog.csdnimg.cn/fb6e65ff4ccb4e529f9703778a5b8841.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
LeetCode By Swift
文章平均质量分 60
Swift 版本 LeetCode 题解
依旧风轻
葵花成海,你在不在
展开
-
92. 反转链表 II (Swift 版本)
给你单链表的头指针 head 和两个整数 left 和 right ,其中 left原创 2024-07-09 14:32:15 · 303 阅读 · 0 评论 -
206. 反转链表 (Swift 版本)
给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。原创 2024-07-05 15:43:00 · 167 阅读 · 0 评论 -
232. 用栈实现队列 (Implement Queue using Stacks)
使用两个栈实现一个队列。队列的操作包括 `push(x)`、`pop()`、`peek()` 和 `empty()`。原创 2024-06-30 02:03:55 · 424 阅读 · 0 评论 -
Swift中的二分查找:全面指南
二分查找是计算机科学中的经典算法,被广泛用于在已排序的数组中高效地搜索目标值。与线性查找逐个检查每个元素不同,二分查找不断将搜索区间减半,因此在处理大数据集时要快得多。在这篇博客中,我们将探讨二分查找的基本原理,它在Swift中的实现,以及使其如此高效的底层概念。原创 2024-06-26 23:30:39 · 367 阅读 · 0 评论 -
560. 和为 K 的子数组
给你一个整数数组 nums 和一个整数 k ,请你统计并返回 该数组中和为 k 的子数组的个数。子数组是数组中元素的连续非空序列。整体时间复杂度优化为 O(n。原创 2024-06-26 03:05:19 · 260 阅读 · 0 评论 -
3. 无重复字符的最长子串
给定一个字符串 s ,请你找出其中不含有重复字符的最长子串的长度。原创 2024-06-25 15:37:38 · 306 阅读 · 0 评论 -
15. 三数之和
给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i != j、i != k 且 j != k ,同时还满足 nums[i] + nums[j] + nums[k] == 0 。请你返回所有和为 0 且不重复的三元组。原创 2024-06-25 14:18:36 · 306 阅读 · 0 评论 -
128. 最长连续序列
给定一个未排序的整数数组 nums ,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。请你设计并实现时间复杂度为 O(n) 的算法解决此问题。原创 2024-06-25 13:45:31 · 183 阅读 · 0 评论 -
1. 两数之和
给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。原创 2024-06-25 12:59:51 · 882 阅读 · 0 评论 -
解题思路:LeetCode 第 209 题 “Minimum Size Subarray Sum“
给定一个包含正整数的数组和一个正整数 `target`,找到该数组中满足其和大于等于 `target` 的最小长度子数组,并返回其长度。如果不存在这样的子数组,则返回 0。原创 2024-06-25 02:17:10 · 378 阅读 · 0 评论 -
136. 只出现一次的数字
给你一个 非空 整数数组 nums ,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。你必须设计并实现线性时间复杂度的算法来解决此问题,且该算法只使用常量额外空间。原创 2024-06-22 03:49:48 · 814 阅读 · 0 评论 -
35. 搜索插入位置
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。原创 2024-06-17 20:55:07 · 472 阅读 · 0 评论 -
102. 二叉树的层序遍历
给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。原创 2024-06-17 18:02:27 · 387 阅读 · 1 评论 -
543. 二叉树的直径
给你一棵二叉树的根节点,返回该树的直径。原创 2024-06-17 01:21:28 · 453 阅读 · 0 评论 -
101. 对称二叉树
要使用迭代方法检查二叉树是否对称,可以利用队列(或栈)来模拟递归的过程。基本思想是将树的两个子树的节点成对地放入队列中,并且成对地比较这些节点是否对称。要检查一个二叉树是否是对称的,可以编写一个递归函数来比较树的左子树和右子树是否是镜像对称的。我们可以用递归来实现这个比较。首先编写一个辅助函数。,用于递归比较两个子树是否镜像对称。给你一个二叉树的根节点。, 检查它是否轴对称。中调用这个辅助函数。用迭代方法解决这个问题。原创 2024-06-17 01:07:02 · 375 阅读 · 1 评论 -
226. 翻转二叉树
给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。原创 2024-06-15 15:12:57 · 259 阅读 · 0 评论 -
104. 二叉树的最大深度
使用广度优先搜索(BFS)来计算二叉树的最大深度是一种基于层次遍历的方法。通过逐层遍历树的节点,可以计算出树的深度。每遍历一层,深度增加一。这个函数利用深度优先搜索(DFS)方法,遍历每个节点恰好一次,因此时间复杂度为 O(n),其中 n 是树中的节点数。这种方法利用了 BFS 的特性,一层一层地遍历树的节点,因此时间复杂度为 O(n),其中 n 是树中的节点数。以下是使用广度优先搜索(BFS)来实现。原创 2024-06-15 13:10:35 · 423 阅读 · 0 评论 -
94. 二叉树的中序遍历(Swift实现, 迭代)
模拟递归压栈每次将当前节点压入栈中,然后移动到左子节点。这相当于递归调用处理左子树。模拟递归出栈当无法继续向左走时,弹出栈顶节点。处理该节点后,转向右子树。继续遍历将current指向右子节点,继续上述过程。原创 2024-06-14 02:04:20 · 619 阅读 · 0 评论 -
94. 二叉树的中序遍历 (Swift版本, 递归)
这个实现清晰且符合中序遍历的定义,对于二叉树的遍历操作非常适用。如果你有任何其他问题或需要进一步的解释,请告诉我。使用了一个递归函数 inorder 来进行二叉树的中序遍历,并将结果存储在数组 ret 中。,因为结果数组的存储空间是 O(n),且递归调用栈的空间在最坏情况下也是 O(n)。空间复杂度主要由递归调用的栈空间和存储结果的数组空间构成。对于二叉树的中序遍历,算法需要访问每个节点恰好一次。递归算法很简单,你可以通过迭代算法完成吗?原创 2024-06-14 01:44:18 · 1258 阅读 · 0 评论 -
160. 相交链表 (Swift版本)
因为示例中的 ListNode 没有实现 Hash 相关协议, 所以无法使用 Set, 这里使用 Array 代替. (LeetCode, 咱能不能重视一下 Swift 用户, OK?遍历 headA 的所有节点, 看 headB 中是否有相交的节点。上面两个方法提交后, 结果都是: 超出时间限制。原创 2024-06-13 17:37:45 · 517 阅读 · 0 评论 -
283. 移动零 (Swift版本)
左指针指向当前已经处理好的序列的尾部,右指针指向待处理序列的头部。右指针不断向右移动,每次右指针指向非零数,则将左右指针对应的数交换,同时左指针右移。从后向前遍历, 发现0就通过交换相邻元素将0移动到最后。原创 2024-06-13 12:11:14 · 272 阅读 · 0 评论 -
28. 找出字符串中第一个匹配项的下标
这个 Swift 代码示例中,computePMT 函数用于计算部分匹配表(PMT),而 KMPSearch 函数则利用 PMT 来在 haystack 中搜索 needle。如果找到了 needle,函数返回它在 haystack 中的起始索引(从 0 开始);如果没有找到,则返回 -1。原创 2024-05-29 22:27:30 · 1255 阅读 · 0 评论 -
14. 最长公共前缀
【代码】14. 最长公共前缀。原创 2024-05-29 05:29:07 · 230 阅读 · 0 评论 -
58. 最后一个单词的长度
【代码】58. 最后一个单词的长度。原创 2024-05-29 03:26:54 · 287 阅读 · 0 评论 -
121. 买卖股票的最佳时机
#题目。原创 2024-05-29 02:29:26 · 280 阅读 · 0 评论 -
169. 多数元素
给定一个大小为 n 的数组 nums ,返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。原创 2024-05-29 01:31:01 · 377 阅读 · 0 评论 -
26. 删除有序数组中的重复项 (Swift版本)
给你一个 非严格递增排列 的数组 nums ,请你删除重复出现的元素,使每个元素只出现一次 ,返回删除后数组的新长度。然后返回 nums 中唯一元素的个数。原创 2024-03-22 01:16:41 · 372 阅读 · 1 评论 -
27. 移除元素 (Swift版本)
解释:函数应该返回新的长度 2, 并且 nums 中的前两个元素均为 2。你不需要考虑数组中超出新长度后面的元素。例如,函数返回的新长度为 2 ,而 nums = [2,2,3,3] 或 nums = [2,2,0,0],也会被视作正确答案。,它一定是输出数组的一个元素,我们就将右指针指向的元素复制到左指针位置,然后将左右指针同时右移;依然使用双指针,两个指针初始时分别位于数组的首尾,向中间移动遍历该序列。输入:nums = [3,2,2,3], val = 3。的元素,并返回移除后数组的新长度。原创 2024-03-18 01:09:11 · 580 阅读 · 0 评论 -
88. 合并两个有序数组 (Swift版本)
注意:最终,合并后数组不应由函数返回,而是存储在数组 nums1 中。为了应对这种情况,nums1 的初始长度为 m + n,其中前 m 个元素表示应合并的元素,后 n 个元素为 0 ,应忽略。nums2 的长度为 n。给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。请你 合并 nums2 到 nums1 中,使合并后的数组同样按 非递减顺序 排列。原创 2024-03-14 19:55:45 · 481 阅读 · 0 评论 -
746. 使用最小花费爬楼梯 (Swift版本)
个台阶向上爬需要支付的费用。一旦你支付此费用,即可选择向上爬一个或者两个台阶。你可以选择从下标为 0 或下标为 1 的台阶开始爬楼梯。请你计算并返回达到楼梯顶部的最低花费。原创 2024-03-08 19:31:48 · 666 阅读 · 1 评论 -
236. 二叉树的最近公共祖先 (Swift版本)
给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。原创 2024-03-08 12:27:42 · 602 阅读 · 0 评论 -
215. 数组中的第K个最大元素 (Swift版本)
【代码】215. 数组中的第K个最大元素 (Swift版本)原创 2023-03-12 02:07:10 · 243 阅读 · 0 评论 -
70. 爬楼梯 (Swift版本)
假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?原创 2023-03-01 23:35:28 · 132 阅读 · 0 评论 -
509. 斐波那契数 (Swift版本)
【代码】509. 斐波那契数 (Swift版本)原创 2023-03-01 22:23:12 · 85 阅读 · 0 评论 -
199. 二叉树的右视图 (Swift版本)
想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。输入: [1,2,3,null,5,null,4]输入: [1,null,3]输出: [1,3,4]原创 2023-02-26 18:27:25 · 71 阅读 · 0 评论 -
107. 二叉树的层序遍历 II (Swift版本)
输入:root = [3,9,20,null,null,15,7](即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)输出:[[15,7],[9,20],[3]]输入:root = [1]输入:root = []原创 2023-02-26 17:43:22 · 67 阅读 · 0 评论 -
102. 二叉树的层序遍历 (Swift版本)
(即逐层地,从左到右访问所有节点)。原创 2023-02-24 14:07:13 · 125 阅读 · 0 评论 -
51. N 皇后 (Swift 版本)
链接:https://leetcode.cn/problems/n-queens。按照国际象棋的规则,皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。解释:如上图所示,4 皇后问题存在两个不同的解法。的棋盘上,并且使皇后彼此之间不能相互攻击。来源:力扣(LeetCode)的棋子放置方案,该方案中。每一种解法包含一个不同的。分别代表了皇后和空位。输出:[[“Q”]]原创 2023-02-23 00:28:34 · 144 阅读 · 0 评论 -
876. 链表的中间结点(Swift实现)
ans.val = 3, ans.next.val = 4, ans.next.next.val = 5, 以及 ans.next.next.next = NULL.(测评系统对该结点序列化表述是 [3,4,5])。由于该列表有两个中间结点,值分别为 3 和 4,我们返回第二个结点。输出:此列表中的结点 3 (序列化形式:[3,4,5])输出:此列表中的结点 4 (序列化形式:[4,5,6])如果有两个中间结点,则返回第二个中间结点。输入:[1,2,3,4,5,6]输入:[1,2,3,4,5]...原创 2022-08-31 23:52:31 · 78 阅读 · 0 评论 -
206. 翻转链表(Resolution By Swift)
206. 翻转链表题目翻转一个链表实例输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL进阶你可以迭代或递归地反转链表。你能否用两种方法解决这道题?解答/** * Definition for singly-linked l原创 2019-01-13 15:20:48 · 258 阅读 · 1 评论