LeetCode-Swift
文章平均质量分 79
LeetCode Swift 题解
余额抵扣
助学金抵扣
还需支付
¥15.90
¥99.00
购买须知?
本专栏为图文内容,最终完结不会低于15篇文章。
订阅专栏,享有专栏所有文章阅读权限。
本专栏为虚拟商品,基于网络商品和虚拟商品的性质和特征,专栏一经购买无正当理由不予退款,不支持升级,敬请谅解。
网罗开发
华为HDE,大学讲师,开源创新毕业设计导师,Swift社区主理人,COC上海社区主理人,优快云博客专家。
《SwiftUI 入门,进阶与实战》 作者
《ESP32-C3 物联网工程开发实战》作者
全网 22万+ 粉丝, 欢迎您的关注与支持。交流合作:fzhanfei
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
LeetCode 397:整数替换
这道题看起来很像是一个「减法游戏」:给定一个正整数 n,我们要通过一系列操作把它变成 1,并且希望用 最少的步骤 完成。原创 2025-10-13 18:46:05 · 371 阅读 · 0 评论 -
LeetCode #239 | 滑动窗口最大值解析:高效解法 & 面试必备技巧!
本题为 LeetCode 前 100 高频题我们社区陆续会将顾毅(Netflix 增长黑客,《iOS 面试之道》作者,ACE 职业健身教练。)的 Swift 算法题题解整理为文字版以方便大家学习与阅读。LeetCode 算法到目前我们已经更新到 238 期,我们会保持更新时间和进度(周一、周三、周五早上 9:00 发布),每期的内容不多,我们希望大家可以在上班路上阅读,长久积累会有很大提升。不积跬步,无以至千里;不积小流,无以成江海,Swift社区 伴你前行。原创 2025-03-25 23:04:09 · 461 阅读 · 0 评论 -
LeetCode 389 找不同
在日常开发中,经常会遇到“数据校验”或者“缺失元素查找”的场景,比如比对两个列表,确认是否有新增/丢失的条目。LeetCode 389 的问题就很像这个场景:我们有两个字符串,其中一个是另一个的乱序版本,只不过多了一个字母。我们需要快速找到那个被“偷偷加进去”的字母。原创 2025-09-27 13:01:35 · 1017 阅读 · 0 评论 -
LeetCode 384 打乱数组 Swift 题解:从洗牌算法到实际应用
在日常开发中,我们经常会遇到需要“打乱顺序”的场景。比如: 推荐系统需要随机排列候选内容,避免总是相同顺序。 游戏发牌要做到公平,不能偏向某种结果。 随机抽题,保证每次的试卷题目顺序不一样。这道题正是要求我们在给定一个数组的情况下,实现一个算法来 随机打乱数组,并且要保证所有排列出现的概率相同。本文会带你从题目描述开始,逐步拆解题解思路,给出 Swift 可运行的代码,并结合实际场景来理解这个问题。原创 2025-09-21 22:11:34 · 957 阅读 · 0 评论 -
LeetCode 387 字符串中的第一个唯一字符 Swift 题解:用哈希表快速定位不重复字符
在日常开发中,处理字符串是最常见的任务之一。有时候我们需要从一段文字里找到某个“特殊”的字符,比如:在用户输入的用户名里,找到第一个唯一字符来生成推荐 ID;在聊天消息里快速定位第一个不重复的字母,做关键词标记;在日志文件里扫描异常标识符时,优先取第一个独特的符号。这道题就是一个简化版的需求:给定一个字符串,找到第一个不重复的字符并返回它的下标,如果没有就返回 -1。原创 2025-09-24 20:56:51 · 655 阅读 · 0 评论 -
LeetCode 388 文件的最长绝对路径
在日常开发中,处理文件路径的逻辑非常常见,尤其是涉及目录层级结构的时候。比如在 IDE 里显示文件目录树、在服务器端解析配置路径,或者在日志系统里定位文件存放位置,都需要类似的层级计算逻辑。这道 LeetCode 388 文件的最长绝对路径 就是个非常典型的模拟文件系统的题目:我们需要根据给定的字符串描述的文件系统结构,找出路径最长的那个文件,并返回它的路径长度。原创 2025-09-26 22:21:30 · 982 阅读 · 0 评论 -
LeetCode 382 - 链表随机节点
这道题挺有意思的:给定一个单链表,每次调用方法时要随机返回链表里的某个节点,而且要求每个节点被选中的概率一样。听起来就像是“从一群人里随机抽一个人”,但问题是链表不像数组那样能直接通过下标访问,这就让事情变得稍微复杂了一点。我们需要思考怎么在 O(1) 空间 或者 合适的时间复杂度 下解决问题。这篇文章会带你一步步分析解法,并提供 Swift 的可运行 Demo,还会结合一些实际的应用场景,比如抽签、随机抽样等,让你对题目有更直观的理解。原创 2025-09-18 15:56:15 · 860 阅读 · 0 评论 -
LeetCode 380 - O(1) 时间插入、删除和获取随机元素
在很多系统设计里,我们经常会遇到“集合”这种数据结构:它需要支持快速插入、删除和查找操作。但有时候,还会额外要求一个功能——随机获取集合里的元素,并且每个元素都有相同的概率被返回。LeetCode 第 380 题就是这样一个有意思的问题:设计一个数据结构,能够在 平均 O(1) 的时间内完成 插入、删除、随机获取 三个操作。本文会从需求出发,带你一步步拆解这道题,并写出可运行的 Swift 代码。原创 2025-09-16 18:00:58 · 961 阅读 · 0 评论 -
LeetCode 385 迷你语法分析器 Swift 题解:从字符串到嵌套数据结构的解析过程
在日常开发中,我们经常会遇到需要解析字符串的场景,比如配置文件、日志格式,甚至是网络传输中的 JSON 数据。这道题就类似于一个“小型 JSON 解析器”,给定一个描述嵌套列表的字符串,要求我们把它还原成嵌套的数据结构 NestedInteger。本文会从题目描述入手,逐步分析如何用栈的方式来解析字符串,并给出 Swift 的完整解法与运行示例。最后,我们也会结合实际场景聊聊这个题目背后的工程意义。原创 2025-09-22 16:31:36 · 820 阅读 · 0 评论 -
LeetCode 381 - O(1) 时间插入、删除和获取随机元素(允许重复)
这道题有点意思,它让我们实现一个特殊的数据结构 RandomizedCollection,要求能在 平均 O(1) 时间 内完成插入、删除和随机获取元素,而且集合里是允许有重复值的。听起来像是 HashSet + Array 的结合体,但允许重复元素就让问题变得更 tricky。接下来我会详细展开解决方案、代码解析,以及跟实际场景结合,让你彻底搞懂这道题。原创 2025-09-17 21:46:53 · 861 阅读 · 0 评论 -
LeetCode 383 - 赎金信
这道题其实是一个很“生活化”的问题:给定两段文字,判断第一段文字(赎金信)能不能完全用第二段文字(杂志)里的字母拼出来。换句话说,你能不能从杂志里“剪字母”,凑成一封赎金信。在程序实现上,本质就是统计字符的数量,看 magazine 里的字母是否够 ransomNote 用。本文会一步步带你分析题目,给出 Swift 的可运行 Demo,并结合一些生活场景来帮助理解。原创 2025-09-20 23:27:27 · 1153 阅读 · 0 评论 -
LeetCode 386 字典序排数 Swift 题解:模拟字典翻页的遍历技巧
在日常开发中,我们有时会需要把一批数字 按字典序 排列,而不是常规的数值大小排序。比如文件名 file1, file2, file10, file11,按照数值大小排应该是 1,2,10,11,但如果是字典序就会变成 1,10,11,2。这道题要求我们从 1 到 n 的所有整数,按字典序输出,而且时间复杂度必须是 O(n),空间 O(1)。看起来像是一个遍历问题,但其实有点像在 翻字典页。原创 2025-09-23 20:15:42 · 1077 阅读 · 0 评论 -
Swift 解题:LeetCode 372 超级次方(Super Pow)
在算法题里,有一些问题看似“简单”,比如算一个幂次方,但一旦放大规模就完全不同了。LeetCode 372 超级次方就是这样的题目。普通的幂运算没什么难度,但当指数 b 是一个用数组表示的上千位数字时,直接计算会导致溢出或者运行缓慢。本文会结合 Swift 给出可运行的解题方案,并分析其原理和实际应用场景。原创 2025-09-05 22:35:37 · 756 阅读 · 0 评论 -
LeetCode 378 - 有序矩阵中第 K 小的元素
在开发中,我们经常遇到需要处理大规模有序数据的场景,比如数据库分页、排行榜查询、或者处理排序过的矩阵。LeetCode 第 378 题“有序矩阵中第 K 小的元素”就是这样一个经典问题:它要求我们在一个行列都排好序的矩阵中,快速找到第 K 小的元素。本文将结合代码、算法思路和实际场景,带大家拆解这个题目的解法。原创 2025-09-14 22:59:19 · 821 阅读 · 0 评论 -
Swift 二分查找实战:轻松搞定 LeetCode 374 猜数字大小
“猜数字”听起来像是个小游戏,但在算法题里,它其实考察的是 二分查找 的应用。这道题的核心就是如何高效地通过“反馈提示”把范围缩小,最终锁定答案。今天这篇文章里,我会用 Swift 实现完整的解法,并且结合实际场景来看看,这样的思路在现实系统中也很常见。原创 2025-09-08 19:34:03 · 1081 阅读 · 0 评论 -
Swift 解法详解:LeetCode 370《区间加法》
在日常开发中,我们经常会遇到类似“批量修改区间”的场景,比如给一批用户的积分统一加值,或者对一个时间段的数据统一做调整。这类问题如果逐个处理,效率会非常低。LeetCode 370《区间加法》就是一个这样的模型:我们要对一个数组的区间进行多次加法操作,最后返回修改后的数组。这道题其实是“差分数组”技巧的典型应用,非常适合拿来作为算法思路的积累。原创 2025-09-03 19:35:32 · 1056 阅读 · 0 评论 -
猜数字也能变成算法题?带你搞懂 LeetCode 375 的制胜秘诀
这道题来自 LeetCode 375 —— 猜数字大小 II。乍一看,它好像只是一个小游戏:“我选一个 1 到 n 的数字,你来猜,每次猜错要付钱”。但仔细一想,你会发现问题的关键在于:如何设计一个策略,让你无论我选什么数字,你都能保证获胜,并且花的钱最少。这其实就是一个经典的 动态规划(Dynamic Programming, DP)问题,跟我们日常开发里做风险预估、最坏情况预算其实挺像的。比如公司做项目时,不光要看理想情况,还要考虑最坏可能,把资源预算拉到最优。这题就是用数学把这种逻辑走了一遍。原创 2025-09-09 12:02:09 · 933 阅读 · 0 评论 -
Swift 解法详解:LeetCode 371《两整数之和》
这道题看起来很奇怪:我们要计算两个整数的和,但题目规定 不能用 + 或 - 运算符。听起来像是脑筋急转弯,其实这是一个很经典的“位运算”应用题。通过理解二进制的加法规则,我们完全可以用 位运算 来模拟加法过程。这类题不仅能训练我们的思维,还能加深对二进制和位操作的理解。在底层开发、嵌入式开发甚至编译器优化里,这些技巧都非常实用。原创 2025-09-04 19:57:51 · 617 阅读 · 0 评论 -
Swift 解法详解:LeetCode 367《有效的完全平方数》
判断一个数是不是完全平方数,看似简单,但题目要求我们不能用 sqrt 这样的现成函数。也就是说,我们得自己想办法去模拟“开平方”的过程。这种题很有意思,不光能训练我们对二分查找的掌握,还能让我们思考数字在计算机里的表现方式。原创 2025-08-30 22:06:55 · 1171 阅读 · 0 评论 -
Swift 解法详解:LeetCode 368《最大整除子集》
有时候我们会遇到这样的问题:给定一堆数,如何从中挑出一个子集,让这个子集里的每一对数都能互相整除?题目要求我们找出最大的这样一个子集。这个问题看起来有点像是在“组团”,条件是必须能整除。其实背后是一个动态规划问题,用来锻炼我们对“子问题递推”的理解。原创 2025-09-01 19:33:51 · 1018 阅读 · 0 评论 -
Swift 解法详解:LeetCode 369《给单链表加一》
这道题听起来很简单:在链表表示的整数上加一。但因为链表是单链表,而且数字是从高位到低位依次存放的,所以要正确处理进位就没那么直观了。我们不能像数组那样直接从最后一位开始往前走,因为链表的尾部不好倒着访问。在这篇文章里,我会用一个清晰的思路来解释,如何优雅地处理这种进位问题,并给出 Swift 的完整实现。原创 2025-09-02 21:42:54 · 1266 阅读 · 0 评论 -
Swift 实现 LeetCode 360:有序转化数组,搞懂这一题就不怕函数变换了
这道题表面上是关于“有序数组的函数变换”,但核心考点其实是:如何在保持效率的情况下,处理带二次函数变换的有序数组。很多人一开始会下意识地把每个数都算出来,再排序,这当然能过小数据,但在大规模输入下就会显得笨重。今天我们就用 Swift 来讲透这道题,顺便写一个可跑的 Demo,保证看完后你不仅理解题目,还能把它运用到实际问题里。原创 2025-08-22 23:33:59 · 1063 阅读 · 0 评论 -
Swift 解法详解:LeetCode 366《寻找二叉树的叶子节点》
这道题乍一看有点像是普通的二叉树遍历,但它其实是让我们把二叉树“分层剥离”。你可以想象一棵树,它的叶子节点最先掉落,掉光之后剩下的新叶子继续掉落,直到整棵树光秃秃的。我们要做的就是模拟这个过程,把每一轮掉落的叶子节点收集起来。原创 2025-08-29 23:41:43 · 1150 阅读 · 0 评论 -
Swift 解法详解 LeetCode 362:敲击计数器,让数据统计更高效
在算法题中,经常会遇到“从大量组合里找到前 K 个最小值”的问题。LeetCode 373 就是一个典型的例子:两个有序数组,要求找出和最小的 K 对数对。看似组合爆炸(n*m 个数对),但其实可以利用最小堆(优先队列)高效求解。本文会用 Swift 给出题解,并结合实际场景来理解这道题。原创 2025-09-06 23:27:19 · 848 阅读 · 0 评论 -
Swift 解法详解 LeetCode 361:轰炸敌人,用动态规划轻松拿下
“轰炸敌人”这道题名字听起来就很带感,它其实是一个二维网格搜索问题。我们要找到一个能放置炸弹的位置,让炸掉的敌人最多。虽然题目看起来复杂,但只要把计算方式优化一下,就能高效解决。今天这篇文章会带大家把题目拆开讲透,写出 Swift 可运行的解法,并结合实际场景,看看类似的思路怎么用在日常开发里。原创 2025-08-23 23:29:59 · 1089 阅读 · 0 评论 -
Swift 解法详解 LeetCode 364:嵌套列表加权和 II
这道题听名字就知道,是跟“加权”有关的。但跟之前的「嵌套列表加权和」不一样,这次的权重不是随着深度增加,而是随着深度减少。换句话说,最外层的数权重最大,最里层的权重最小。原创 2025-08-27 23:24:17 · 745 阅读 · 0 评论 -
Swift 解法详解 LeetCode 363:矩形区域不超过 K 的最大数值和
这道题的名字听上去有点“硬核数学”,但其实本质就是:在一个二维矩阵里找一个子矩形,这个子矩形的元素和要尽可能大,但同时又不能超过一个给定的阈值 K。现实中你可能会遇到类似问题:原创 2025-08-26 22:17:13 · 526 阅读 · 0 评论 -
Swift 解法详解 LeetCode 365:水壶问题
这道题其实就是经典的 “两个水壶问题”,你可能在电影《虎胆龙威3》里见过,布鲁斯·威利斯用两个水壶精确量出 4 升水来解除炸弹。这题就是把那个场景搬到了编程世界里。原创 2025-08-28 22:54:01 · 1013 阅读 · 0 评论 -
排列组合 + Swift 实战:一文搞定 LeetCode 357 不重复数字计
想一想我们日常生活里的数字,经常会遇到重复的,比如闹钟上的“11”,或者年份“2022”。但如果我们只想要不重复的数字呢?比如 123 或 507 这种没有重复数字的数。LeetCode 357 问题就是在考这个:在给定范围内,找出有多少个这样的“不重复数字”。这个题目不是单纯的枚举,而是一个结合数学、排列组合和编程技巧的好题。下面我们用 Swift 来解决它,并一步步拆开逻辑,还会写一个小 Demo 帮助你真正跑起来。原创 2025-08-19 22:38:31 · 766 阅读 · 0 评论 -
K距离间隔重排字符串 (LeetCode 358) — Swift解法 + 可运行Demo
这道题的核心是:把字符串里的字符重新排一下顺序,让相同字符之间至少隔开 k 个位置。如果做不到,就返回空串。看上去像“排座位”,其实是一道标准的“贪心 + 堆 + 冷却队列”题。本文用 Swift 写出一份可直接运行的 Demo,顺便把实现细节和常见坑讲清楚。原创 2025-08-20 23:32:33 · 822 阅读 · 0 评论 -
Swift 实战:判断点集是否关于某条直线对称(LeetCode 356)
对称性是我们在生活中常常看到的现象:镜子里的自己,湖水中的倒影,建筑物的设计美学……在数学和算法里,“对称”同样有重要的应用。LeetCode 356 提出了这样一个问题:给定一组点,判断它们是否能被一条垂直于 y 轴的直线对称。这题看似小巧,但却考察了我们对几何直观的理解和对哈希集合的灵活运用。本文将从题目描述出发,用 Swift 编写一个完整的解决方案,并附带一个可运行的 Demo,带你感受代码如何模拟“照镜子”的过程。原创 2025-08-18 18:01:12 · 770 阅读 · 0 评论 -
再也不怕日志刷屏!Swift 带你轻松玩转 LeetCode 359
我们在日常开发中,时常会遇到“日志频率太高”的问题。如果把所有日志都毫无控制地打印出来,结果可能会造成控制台爆炸、日志文件过大,甚至让系统性能受影响。LeetCode 359 给我们提供了一个简化版的场景:设计一个日志速率限制器(Logger Rate Limiter),确保相同的日志消息在 10 秒之内只会打印一次。这道题乍看简单,其实很贴近实际业务中的“限流”、“节流”思想。本文会用 Swift 写出题解,并且带上一个可以直接运行的 Demo,顺便讲讲这类题在实际工作里的意义。原创 2025-08-21 22:06:10 · 609 阅读 · 0 评论 -
Swift 实战:用最长递增子序列算法解“俄罗斯套娃信封”问题(LeetCode 354)
这道题表面是“套娃游戏”,实际上是一个二维排序 + 最长递增子序列(LIS)的经典组合题。我们要在一堆信封中,找出能一层套一层的最大数量。本文会从零开始分析题目、拆解解法、实现一个 Swift 可运行 Demo,并结合实际场景聊聊为什么这种思路很常见。看完之后,你不仅能秒杀这题,还能举一反三,处理各种二维排序 + LIS 的场景。原创 2025-08-15 23:27:18 · 1011 阅读 · 0 评论 -
Swift 实战:用链表和哈希表写出高性能的贪吃蛇引擎(LeetCode 353)
这题的目标是设计一个“贪吃蛇”核心引擎:给定棋盘大小和一串食物位置,支持不断调用 move(direction) 推进游戏,返回当前分数,撞墙或咬到自己就结束(返回 -1)。本文用 Swift 从零实现一个能跑起来的 Demo,包括完整的 SnakeGame 类、关键数据结构设计、边界与碰撞处理、以及几组样例跑数。代码贴近实战,既能交作业,也能当你写小型游戏/面试题的参考模板。原创 2025-08-14 23:25:10 · 1394 阅读 · 0 评论 -
Swift 实战:精确匹配的数组交集(LeetCode 350)
如果说 LeetCode 349 的交集是找“共同好友”,那么 350 题就是找“共同好友,而且算上重复次数”。举个生活场景:假设你和朋友去超市购物,你的购物单是 [牛奶, 牛奶, 面包],朋友的是 [牛奶, 面包, 面包],你们的“共同购物清单”不只是 牛奶, 面包,而是要考虑数量,比如两人都买了牛奶一次(取最少的次数),面包只取一次。这类问题在电商、库存管理、日志比对等场景特别常见。今天我们用 Swift 来实现,并且做一个可以直接跑的 Demo。原创 2025-08-11 21:48:51 · 765 阅读 · 0 评论 -
Swift 实战:实现一个简化版的 Twitter(LeetCode 355)
在社交媒体平台里,推送机制是核心功能之一。比如你关注了某人,就希望在自己的时间线上能看到他们的最新消息,同时自己的消息也要能出现在别人的首页。LeetCode 355 题——“设计推特”就把这个场景简化成一个核心设计题。我们要实现一个小型 Twitter 系统,支持发推文、关注/取关用户、获取最新消息流。原创 2025-08-16 21:17:00 · 892 阅读 · 0 评论 -
Swift 实战:高效设计 Tic-Tac-Toe 游戏逻辑(LeetCode 348)
如果让你实现一个两人对战的井字棋(Tic-Tac-Toe)游戏逻辑,你会怎么做?是不是会直接用二维数组存每个格子的状态,然后在每次落子后从头到尾检查是否赢了?这种方式虽然直观,但效率并不高,特别是当棋盘扩大到 n×n 的时候。LeetCode 348 这个题目就挑战我们去优化这个过程:每次落子之后都要快速判断胜负,尽可能降低计算开销。原创 2025-08-07 16:42:30 · 1229 阅读 · 0 评论 -
Swift 实战:用堆结构高效搞定 LeetCode 347 前 K 个高频元素
你有没有遇到过这样一个需求:从一堆数据里找出“出现次数最多的前 K 个元素”?不管是评论区里找最热话题,还是电商数据分析中筛选热门商品,这种“前 K 高频元素”都是非常典型的场景。LeetCode 347 这道题就完美地还原了这个需求。今天我们用 Swift 带大家写一个实战 Demo,讲清楚“哈希表 + 小顶堆”的高效解法,并且看看它在实际项目中的应用。原创 2025-08-06 23:19:42 · 880 阅读 · 0 评论 -
Swift 实战:秒算两个数组的交集(LeetCode 349)
两个数组取交集,看起来是个特别日常的操作,对吧?比如你想找出两个用户列表中共同的朋友,或者想知道两个商品集合里有什么是重复的。但是在工程中,如果数据量稍微一大,写得不够高效就可能拖慢整个功能的响应速度。原创 2025-08-09 23:01:40 · 2450 阅读 · 0 评论 -
Swift 实战:用队列巧解 LeetCode 346 数据流中的移动平均数
在数据流处理中,实时计算“滑动窗口内的平均数”是一个非常常见的需求。不论是金融领域的股票价格走势,还是物联网设备的实时数据监控,移动平均(Moving Average) 都是核心操作。原创 2025-08-05 23:30:42 · 822 阅读 · 0 评论
分享