142. 环形链表 II
题目链接:https://programmercarl.com/0142.%E7%8E%AF%E5%BD%A2%E9%93%BE%E8%A1%A8II.html#%E6%80%9D%E8%B7%AF
- 是否有环:快走2,慢走1;
- 环的入口:相遇位置和头节点处分别走1相遇的位置。
- 注意走两步也要判断next是否为null:
while (fast != null && fast.next != null)
15. 三数之和
题目链接:https://programmercarl.com/0015.%E4%B8%89%E6%95%B0%E4%B9%8B%E5%92%8C.html#%E6%80%9D%E8%B7%AF
- 思路:先排序,然后双指针遍历b和c。
- 注意去重时分为两部分,一个是a,一个是b+c。
- 去重a时,要注意是与前一个元素比较(因为遍历的bc是在a后面的),否则会丢结果。
- 去重b和c时,要注意在某个结果出来之后,跳过与b、c相同的值。
- 注意每次++或–时,判断条件是否需要left<right
- 语法:
Arrays.sort(nums);
List<List> res=new ArrayList<>();
result.add(Arrays.asList(nums[i], nums[left], nums[right]));
232. 用栈实现队列
题目链接:https://programmercarl.com/0232.%E7%94%A8%E6%A0%88%E5%AE%9E%E7%8E%B0%E9%98%9F%E5%88%97.html#%E5%85%B6%E4%BB%96%E8%AF%AD%E8%A8%80%E7%89%88%E6%9C%AC
- 两个栈互相倒,注意pop和push操作时两个栈的同步。
- 语法:
Stack stackIn = new Stack<>();
isEmpty()、pop()、push()、peek()