什么时候需要用虚拟头结点?我这里总结下:当你需要创造一条新链表的时候,可以使用虚拟头结点简化边界情况的处理

比如说,让你把两条有序链表合并成一条新的有序链表,是不是要创造一条新链表?再比你想把一条链表分解成两条链表,是不是也在创造新链表?这些情况都可以使用虚拟头结点简化边界情况的处理。


简单解释一下什么是原地修改:

如果不是原地修改的话,我们直接 new 一个 int[] 数组,把去重之后的元素放进这个新数组中,然后返回这个新数组即可。 但是现在题目让你原地删除,不允许 new 新数组,只能在原数组上操作,然后返回一个长度,这样就可以通过返回的长度和原始数组得到我们去重后的元素有哪些了

21. 合并两个有序链表

反转链表

92. 反转链表 II

100. 相同的树

701. 二叉搜索树中的插入操作

450. 删除二叉搜索树中的节点

700. 二叉搜索树中的搜索

86. 分隔链表

19. 删除链表的倒数第 N 个结点

876. 链表的中间结点 快慢指针

83. 删除排序链表中的重复元素