题目描述
删除链表中等于给定值 val 的所有节点。
示例 1: 输入:head = [1,2,6,3,4,5,6], val = 6 输出:[1,2,3,4,5]
示例 2: 输入:head = [], val = 1 输出:[]
示例 3: 输入:head = [7,7,7,7], val = 7 输出:[]
思路
很基础的一道链表类型的题目,虽然简单,但能帮助我们更好地理解链表的特性。解决这道题,我们只需维护一前一后两个指针就好了,但难点是对首节点的操作,如果我们把首节点删了该怎么办呢?你也许会回答说让第二个节点替代首节点,那如果第二个节点依然要被删掉呢?这样不是不能写,但写起来不仅麻烦,还不够简洁。避免这种问题我们只需新增一个虚拟节点,就不需要管首节点的“死活”了,做到首节点和其他节点“一视同仁”。
解法
C++版本
Java版本
Python3版本
拓展
上面代码我们每次都维护了两个指针,那可以只维护一个指针吗?