摘要
当前想在力扣刷算法题,提交语言是没有OC可供选择的,那作为iOS开发者就只能转而使用 Swift 去提交。好在作为程序员掌握了一门语言,再去学习一门其他的语言还是比较容易的。要学习 Swift 去看下 Swift 的官方文档,看个一两周,掌握了语言基础再去刷题,还是比较轻松的。本文则是记录我在力扣用 Swift 刷题的一些题解,本篇记录腾讯精选50题,我这里根据题目的难易度,按照简单、中等、困难的顺序排列。
9. 回文数
简单题,一个数是回文数,那么首尾对应的数字都相同,转成字符串逐一比对首尾字符即可。
|
|
14. 最长公共前缀
简单题,取出首元素,遍历后面的每个元素,不断更新公共前缀
|
|
20. 有效的括号
简单题,本题关键是理解,最内层左括号紧接着的下一个必须是与之相符的右括号,否则就无法关闭
|
|
21. 合并两个有序链表
简单题,递归处理
|
|
26. 删除有序数组中的重复项
简单题,用集合处理,注意 nums 是 inout 参数,要将其修改为操作后的数组
|
|
70. 爬楼梯
简单题,典型的动态规划,爬到第n阶等于,爬到第n-1阶和n-2阶方法之和,用2个变量交替存值,循环即可
|
|
88. 合并两个有序数组
简单题,合并后再排序即可
|
|
104. 二叉树的最大深度
简单题,递归即可,注意传入depth
|
|
121. 买卖股票的最佳时机
简单题,动态规划,不断计算前n天的最小价格 和 当天卖出与之前某天卖出的最大值
|
|
136. 只出现一次的数字
简单题,用异或来做,异或:同为0异为1。两个相同的数都会被抵消为0,0异或任何数,等于任何数。
|
|
141. 环形链表
简单题,快慢指针,如果是环形链表快慢指针必定会相遇
|
|
160. 相交链表
简单题,两指针各3段走完,路程一样必相遇于交点
|
|
169. 多数元素
简单题,用字典记录出现次数
|
|
206. 反转链表
简单题,用temp记录下一指针,依次交换
|
|
217. 存在重复元素
简单题,用集合或排序数组后遍历来做都可以,比较简单
|
|
231. 2 的幂
简单题,2种方法,利用持续除2为1或利用位运算,n & (n-1) 必定为0都可以
|
|
|
|
292. Nim 游戏
简单题,思维题,简单来说就是谁拿的时候还剩4个,谁就肯定赢不了
|
|
344. 反转字符串
简单题,使用元组或用swapAt函数都行
|
|
|
|
557. 反转字符串中的单词 III
简单题,直接用 split 和 joined 函数处理
|
|
2. 两数相加
中等题,注意进位即可
|
|
5. 最长回文子串
中等题,用中心扩散法做,奇数用i自身向两边扩散,偶数用 i和i+1 两个数向两边扩撒
|
|
7. 整数反转
中等题,不点评了,看代码
|
|
8. 字符串转换整数 (atoi)
中等题,不点评,看代码
|
|
11. 盛最多水的容器
中等题,双指针,简单理解就是那边小,哪边往中间挪一步
|
|
15. 三数之和
中等题,先排序,针对每个数,用双指针操作后面两个数遍历,注意同值的情况处理。
|
|