宣言:早搞晚搞,迟早要搞,干就是了! Just Do IT!
-
打开 LeetCodePlayground.playground 练习步骤1)的卡片中的一道算法题
-
在 LeetCode 测试并完成算法题的提交
-
补充算法要点与简单描述
-
单独提交 Swift 文件并更新 README 以便在 GitHub 查看
数据结构是为算法服务的
标题 | 标签 | 描述 | 题解 |
---|---|---|---|
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 |
标题 | 标签 | 描述 | 题解 |
---|---|---|---|
24.两两交换链表中的节点 | 链表 |
给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。 | Swift |
707. 设计链表 | 链表 |
设计链表的实现。您可以选择使用单链表或双链表。 | Swift |
19. 删除链表的倒数第N个节点 | 链表 双指针 |
给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。 | Swift |
203. 移除链表元素 | 链表 |
删除链表中等于给定值 val 的所有节点。 | Swift |
328. 奇偶链表 | 链表 多指针 |
给定一个单链表,把所有的奇数节点和偶数节点分别排在一起。 | Swift |
234. 回文链表 | 链表 双指针 |
判断一个链表是否为回文链表。 | Swift |
2. 两数相加 | 链表 数学 |
给出两个 非空 的链表用来表示两个非负的整数。 | Swift |
21. 合并两个有序链表 | 链表 |
将两个有序链表合并为一个新的有序链表并返回。 | Swift |
61. 旋转链表 | 链表 双指针 |
给定一个链表,旋转链表,将链表每个节点向右移动 k 个位置,其中 k 是非负数。 | Swift |
25. K 个一组翻转链表 | 链表 |
给定一个链表,每 k 个节点一组进行翻转,返回翻转后的链表。 | Swift |
标题 | 标签 | 描述 | 题解 |
---|---|---|---|
1003. 检查替换后的词是否有效 | 字符串 栈 |
按给定规则检查替换后的词有效性 | Swift |
71. 简化路径 | 字符串 栈 |
以 Unix 风格给出一个文件的绝对路径,你需要简化它。或者换句话说,将其转换为规范路径。 | Swift |
155. 最小栈 | 栈 、设计 |
设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈。 | Swift |
20. 有效的括号 | 字符串 栈 |
给定一个只包括 '(' ,')' ,'{' ,'}' ,'[' ,']' 的字符串,判断字符串是否有效。 |
Swift |
739. 每日温度 | 栈 哈希表 |
根据每日 气温 列表,请重新生成一个列表,对应位置的输入是你需要再等待多久温度才会升高超过该日的天数。 |
Swift |
150. 逆波兰表达式求值 | 栈 |
根据逆波兰表示法,求表达式的值。 | Swift |
标题 | 标签 | 描述 | 题解 |
---|---|---|---|
622. 设计循环队列 | 设计 队列 |
设计循环队列实现 | Swift |
标题 | 标签 | 描述 | 题解 |
---|---|---|---|
标题 | 标签 | 描述 | 题解 |
---|---|---|---|
98. 验证二叉搜索树 | 树 深度优先搜索 |
给定一个二叉树,判断其是否是一个有效的二叉搜索树。 | Swift |
236. 二叉树的最近公共祖先 | 树 深度优先搜索 |
给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 | Swift |
102. 二叉树的层序遍历 | 树 广度优先搜索 |
给定一个二叉树,返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。 | Swift |
标题 | 标签 | 描述 | 题解 |
---|---|---|---|
标题 | 标签 | 描述 | 题解 |
---|---|---|---|
标题 | 标签 | 描述 | 题解 |
---|---|---|---|
标题 | 标签 | 描述 | 题解 |
---|---|---|---|
算法要作用在特定的数据结构之上
标题 | 标签 | 描述 | 题解 |
---|---|---|---|
- 常见排序算法:冒泡、选择、插入、堆排序、归并排序、快速排序
标题 | 标签 | 描述 | 题解 |
---|---|---|---|
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 |
标题 | 标签 | 描述 | 题解 |
---|---|---|---|
8.字符串转换整数 (atoi) | 数学 字符串 |
实现一个 atoi 函数,使其能将字符串转换成整数 |
Swift |
151. 翻转字符串里的单词 | 字符串 |
给定一个字符串,逐个翻转字符串中的每个单词。 | Swift |
880. 索引处的解码字符串 | 字符串 、余数 |
给定编码字符串,查找解码字符串中的第 K 个字母 | Swift |