LeetCode203题:
给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点, 并返回 新的头节点 。
示例 1:
//
//
//输入:head = [1,2,6,3,4,5,6], val = 6
//输出:[1,2,3,4,5]
思路:
递归三部曲:
1.找终止条件:
什么情况下递归终止,就是链表遍历完的时候。
2.找返回值:
我们希望上一级递归返回什么? 我们的目的是删除链表中节点值和指定的值相等的节点。 所以返回的 节点值是不等于指定的值的节点。
3.本级递归应该做什么:
只考虑本级递归,如果当前节点的值不等于指定的值,我们就可以返回这个节点,反之则返回下一个节点,然后下一个节点接着判断
用递归:
代码如下:
if(head == null){
return head;
}
head.next = removeElements(head.next,val);
return head.val == val ? head.next: head;