LeetCode-Swift-Track
LeetCode 💖 Swift,攻克数据结构与算法。
宣言:~~早搞晚搞,迟早要搞,干就是了!~~ Just Do IT!
开始练习
- LeetCode 探索
-
-> 选择一个「数据结构」或「算法」卡片
-
-> 学习相关概念
-
-> 提炼记录必要笔记
-
打开 LeetCodePlayground.playground 练习步骤1)的卡片中的一道算法题
-
在 LeetCode 测试并完成算法题的提交
-
补充算法要点与简单描述
-
单独提交 Swift 文件并更新 README 以便在 GitHub 查看
数据结构
数据结构是为算法服务的
- 数组
📔
- 字符串
- 链表
📔
- 栈
📔
- 队列
- 散列表
- 二叉树
- 堆
- 跳表
- 图
- Trie 树
数组
| 标题 |
标签 |
描述 |
题解 |
| 1. 两数之和 |
数组 哈希表 |
给定一个整数数组和目标值,找出和为目标值的那两个整数。 |
Swift |
| 724. 寻找数组的中心索引 |
数组 |
给定一个整数数组,找出「中心索引」 |
Swift |
| 747. 至少是其他数字两倍的最大数 |
数组 |
查找数组中的最大元素是否至少是数组中每个其他数字的两倍。 |
Swift |
| 66. 加一 |
数组 |
给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。 |
Swift |
| 498. 对角线遍历 |
数组 |
给定一个含有 M x N 个元素的矩阵(M 行,N 列),请以对角线遍历的顺序返回这个矩阵中的所有元素 |
Swift |
| 118. 杨辉三角 |
数组 |
给定一个非负整数 _numRows,_生成杨辉三角的前 numRows 行 |
Swift |
| 283. 移动零 |
数组 |
给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。 |
Swift |
| 27. 移除元素 |
数组 |
给定一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,返回移除后数组的新长度。 |
Swift |
| 26. 删除排序数组中的重复项 |
数组 |
给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。 |
Swift |
| 75. 颜色分类 |
数组 排序 双指针 |
给定一个包含红色、白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。 |
Swift |
| 215. 数组中的第K个最大元素 |
数组 排序 多指针 |
在未排序的数组中找到第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。 |
Swift |
| 88. 合并两个有序数组 |
数组 双指针 |
给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中_,_使得 num1 成为一个有序数组。 |
Swift |
| 167. 两数之和 II - 输入有序数组 |
数组 双指针 二分查找 |
给定一个已按照**_升序排列_** 的有序数组,找到两个数使得它们相加之和等于目标数。 |
Swift |
| 125. 验证回文串 |
数组 指针碰撞 |
给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。 |
Swift |
| 345. 反转字符串中的元音字母 |
数组 指针碰撞 |
编写一个函数,以字符串作为输入,反转该字符串中的元音字母。 |
Swift |
| 11. 盛最多水的容器 |
数组 双指针 |
给定 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。 |
Swift |
| 209. 长度最小的子数组 |
数组 双指针 二分查找 |
给定一个含有 n 个正整数的数组和一个正整数 **s ,找出该数组中满足其和 ≥ s 的长度最小的连续子数组。**如果不存在符合条件的连续子数组,返回 0。 |
Swift |
| 695. 岛屿的最大面积 |
数组 深度优先搜索 |
找到给定的二维数组中最大的岛屿面积 |
Swift |
| 45. 跳跃游戏 II |
数组 贪心算法 |
使用最少的跳跃次数到达数组的最后一个位置 |
Swift |
| 560. 和为K的子数组 |
数组 哈希表 |
给定一个整数数组和一个整数 **k,**你需要找到该数组中和为 k 的连续的子数组的个数。 |
Swift |
| 15. 三数之和 |
数组 双指针 |
给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ? |
Swift |
字符串
| 标题 |
标签 |
描述 |
题解 |
| 67. 二进制求和 |
字符串 数学 |
给定两个二进制字符串,返回他们的和(用二进制表示)。 |
Swift |
| 3. 无重复字符的最长子串 |
哈希表 双指针 字符串 滑动窗口 |
给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。 |
Swift |
| 14. 最长公共前缀 |
字符串 |
编写一个函数来查找字符串数组中的最长公共前缀。 |
Swift |
| 93. 复原IP地址 |
字符串 |
给定一个只包含数字的字符串,复原它并返回所有可能的 IP 地址格式。 |
Swift |
| 71. 简化路径 |
字符串 栈 |
以 Unix 风格给出一个文件的绝对路径,你需要简化它。或者换句话说,将其转换为规范路径。 |
Swift |
链表
栈
| 标题 |
标签 |
描述 |
题解 |
| 1003. 检查替换后的词是否有效 |
字符串 栈 |
按给定规则检查替换后的词有效性 |
Swift |
| 71. 简化路径 |
字符串 栈 |
以 Unix 风格给出一个文件的绝对路径,你需要简化它。或者换句话说,将其转换为规范路径。 |
Swift |
| 155. 最小栈 |
栈、设计 |
设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈。 |
Swift |
| 20. 有效的括号 |
字符串 栈 |
给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。 |
Swift |
| 739. 每日温度 |
栈 哈希表 |
根据每日 气温 列表,请重新生成一个列表,对应位置的输入是你需要再等待多久温度才会升高超过该日的天数。 |
Swift |
| 150. 逆波兰表达式求值 |
栈 |
根据逆波兰表示法,求表达式的值。 |
Swift |
队列
散列表
二叉树
| 标题 |
标签 |
描述 |
题解 |
| 98. 验证二叉搜索树 |
树 深度优先搜索 |
给定一个二叉树,判断其是否是一个有效的二叉搜索树。 |
Swift |
| 236. 二叉树的最近公共祖先 |
树 深度优先搜索 |
给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 |
Swift |
| 102. 二叉树的层序遍历 |
树 广度优先搜索 |
给定一个二叉树,返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。 |
Swift |
堆
跳表
图
Trie-树
算法
算法要作用在特定的数据结构之上
- 递归
- 排序
- 二分查找
- 搜索
- 哈希算法
- 贪心算法
- 分治算法
- 回溯算法
- 动态规划
📔
- 字符串匹配算法
递归
排序
- 常见排序算法:冒泡、选择、插入、堆排序、归并排序、快速排序
| 标题 |
标签 |
描述 |
题解 |
| 274. H指数 |
排序 哈希 |
给定论文被引用次数的数组。编写一个方法,计算出研究者的 h 指数。 |
Swfit |
| 912. 排序数组 |
排序 数组 |
给你一个整数数组 nums,请你将该数组升序排列。 |
Swift |
二分查找
| 标题 |
标签 |
描述 |
题解 |
| 33. 搜索旋转排序数组 |
数组 二分查找 |
按照升序排序的数组在预先未知的某个点上进行了旋转,在该数组中查找目标值 |
Swift |
| 4. 寻找两个正序数组的中位数 |
数组 二分查找 分治算法 |
给定两个大小为 m 和 n 的正序数组 nums1 和 nums2。找出这两个正序数组的中位数 |
Swift |
搜索
哈希算法
贪心算法
| 标题 |
标签 |
描述 |
题解 |
| 45. 跳跃游戏 II |
数组 贪心算法 |
使用最少的跳跃次数到达数组的最后一个位置 |
Swift |
分治算法
回溯算法
动态规划
| 标题 |
标签 |
描述 |
题解 |
| 53. 最大子序和 |
数组 动态规划 分治算法 |
给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 |
Swift |
| 983. 最低票价 |
动态规划 |
给定的列表 days 中列出的每一天的旅行所需要的最低消费。 |
Swift |
| 221. 最大正方形 |
动态规划 |
在一个由 0 和 1 组成的二维矩阵内,找到只包含 1 的最大正方形,并返回其面积。 |
Swift |
| 152. 乘积最大子数组 |
数组 动态规划 |
给定一个整数数组 nums ,找出数组中乘积最大的连续子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。 |
Swift |
字符串匹配算法