题目:
Remove all elements from a linked list of integers that have value val.
Example
Given: 1 --> 2 --> 6 --> 3 --> 4 --> 5 --> 6, val = 6
Return: 1 --> 2 --> 3 --> 4 --> 5
仍然依照递归的解题思路,第一步找出 base case:当前node为null时,不需要有任何操作,直接返回null;
第二步找到 recursion rule:除去base case之外,当前node已经不为空。当前node.val == target_val时,去掉当前node,使用node.next递归;当前node.val != target_val时,当前node需要保留,并使用node.next递归;
第三步确定递归函数需要的参数:需要两个参数,一个为当前node,一个为target的值val;
代码:
public class Solution {
public ListNode removeElements(ListNode head, int val) {
if (head == null)
return null;
if (head.val == val)
return removeElements(head.next, val);
else {
head.next = removeElements(head.next, val);
return head;
}
}
}