7 天带你全方位刷爆数据结构与算法,每天一道,高效刷题
前言
很多算法小白初期刷题比较迷茫,不知道从何刷起从何入手,也不知道怎么使用 LeetCode,这篇带你高效使用力扣,让刷题进大厂的路上不再迷茫!
1、反转链表
反转一个单链表:
复制代码
方法 1:
迭代,重复某一过程,每一次处理结果作为下一次处理的初始值,这些初始值类似于状态、每次处理都会改变状态、直至到达最终状态。
从前往后遍历链表,将当前节点的 next 指向上一个节点,因此需要一个变量存储上一个节点 prev,当前节点处理完需要寻找下一个节点,因此需要一个变量保存当前节点 curr,处理完后要将当前节点赋值给 prev,并将 next 指针赋值给 curr,因此需要一个变量提前保存下一个节点的指针 next。
![](https://static001.geekbang.org/infoq/17/179aa1d908316dec7955576a2e705367.png)
1、将下一个节点指针保存到 next 变量 next = curr.next
2、将下一个节点的指针指向 prev,curr.next = prev
3、准备处理下一个节点,将 curr 赋值给 prev
4、将下一个节点赋值为 curr,处理一个节点
方法 2:
递归:以相似的方法重复,类似于树结构,先从根节点找到叶子节点,从叶子节点开始遍历大的问题(整个链表反转)拆成性质相同的小问题(两个元素反转)curr.next.next = curr 将所有的小问题解决,大问题即解决
![](https://static001.geekbang.org/infoq/3c/3c100b282c3467dc96793666e6e3c2a8.png)
只需每个元素都执行 curr.next.next = curr,curr.next = null 两个步骤即可
为了保证链不断,必须从最后一个元素开始
复制代码
2、统计 N 以内的素数
![](https://static001.geekbang.org/infoq/fa/fa7e8b69ea854185e0ed8d59943c0db7.png)
3、寻找数组的中心索引
![](https://static001.geekbang.org/infoq/87/87cca92d5c71e19bea47cdce2b4c6c10.png)
4、删除排序数组中的重复项
![](https://static001.geekbang.org/infoq/71/71a76708a441eea30d73ffff28350f9a.png)
5、x 的平方根
![](https://static001.geekbang.org/infoq/c3/c38e457a30fce23994231ee12a92b5cb.png)
6、三个数的最大乘积
![](https://static001.geekbang.org/infoq/61/612ea17fe70ecc1c92e5fa8266e36b35.png)
7、两数之和
![](https://static001.geekbang.org/infoq/82/82c30af33a1b6f22980e6b5241168237.png)
8、斐波那契数列
![](https://static001.geekbang.org/infoq/80/80b419aa7c6d189a34b13a48a32cef42.png)
9、环形链表
![](https://static001.geekbang.org/infoq/4d/4dea256162bd719ddacc4b19f855c906.png)
10、排列硬币
![](https://static001.geekbang.org/infoq/20/20f29ec7d8f1874a751fe3f028b7d956.png)
11、合并两个有序数组
![](https://static001.geekbang.org/infoq/21/2109b568e85a9c91be2f01163af18538.png)
12、子数组最大平均数
![](https://static001.geekbang.org/infoq/43/43430d1fad3c9abccf098b918c0ee84a.png)
13、二叉树的最小深度
![](https://static001.geekbang.org/infoq/b8/b878720d4c8a756e70249789781d5dac.png)
14、最长连续递增序列
![](https://static001.geekbang.org/infoq/33/33ea87815d2236eaeae50966b290b427.png)
15、柠檬水找零
![](https://static001.geekbang.org/infoq/51/51873886792b6089931abd33c0c9748c.png)
16、三角形的最大周长
![](https://static001.geekbang.org/infoq/9e/9edfbff477236670cd91ac8c6f12ed3c.png)
17、二叉树遍历
![](https://static001.geekbang.org/infoq/b2/b2379e54bf85deac2ff48a6c161a700b.png)
18、省份数量
![](https://static001.geekbang.org/infoq/99/992c1b04b8a8a96c8f7952ed7e405dd2.png)
19、预测赢家
![](https://static001.geekbang.org/infoq/30/308f9f739f7c34aa8d5c77e495b6a9ae.png)
20、香槟塔
![](https://static001.geekbang.org/infoq/5d/5d33262d113f4f25363a956ffd947c20.png)
21、井字游戏
![](https://static001.geekbang.org/infoq/a9/a97b3103f47564f7855048264e57312e.png)
22、打家劫舍
![](https://static001.geekbang.org/infoq/78/78f01b9f584bdd63472f38fda744e3ca.png)
23、优势洗牌
![](https://static001.geekbang.org/infoq/39/394abbf28a1e685c1fd755376d3d4a5e.png)
24、Dota2 参议院
![](https://static001.geekbang.org/infoq/37/3708cb84ebd876b721d49fcc184d1700.png)
算法笔记及代码文档
![](https://static001.geekbang.org/infoq/56/56e77b35bf12c5de08fbbf821124fc8c.png)
![](https://static001.geekbang.org/infoq/53/53a351b3c27893566b9579a5e3f5b7ee.png)
需要文章中配套资料的朋友可以——点击传送门
评论