题目来源:https://books.halfrost.com/leetcode/ChapterTwo/Two_Pointers/

61. 旋转链表

题目链接:https://leetcode.cn/problems/rotate-list/

双指针,间隔指定的K个元素(k=3,左右两个指针分别指向0和3,间隔3个),然后将末尾的指针的next指向head指针,删除左指针到其next的链接,然后返回next作为头指针。

关联目标:双指针刷题 11/76

75. 颜色分类

题目链接:https://leetcode.cn/problems/sort-colors/

要求:常数空间,一趟扫描
首先,因为只有三种颜色,应该想到计数排序法
其次,这篇文章中75. Sort Colors #提到的这种解法,我用自己的语言再总结以下

这题由于数字只会出现 0,1,2 这三个数字,所以用游标移动来控制顺序也是可以的。具体做法:0 是排在最前面的,所以只要添加一个 0,就需要放置 1 和 2。1 排在 2 前面,所以添加 1 的时候也需要放置 2 。至于最后的 2,只用移动游标即可。
先用一个指针R,从头到尾一直放2,假设输入是nums = [2,0,2,1,1,0]这种算法输出的结果就是

222222

这样明显不对,如果指针R碰到的是0,那么应该是放到最前面的位置,我们用一个指针L1来记录,L1一开始指向第0个位置

2 0 2 1 1 0
  R
L
0 2 2 1 1 0

那如果遇到1呢,那么就再来一个指针L2,记录下需要放1的位置

0 2 2 1 1 0
      R
  L1

其他更新中,先把全部的题刷了