题目描述
Remove all elements from a linked list of integers that have value val.
Example:
Input: 1->2->6->3->4->5->6, val = 6
Output: 1->2->3->4->5
方法思路
Approach1:
class Solution {
public ListNode removeElements(ListNode head, int val) {
ListNode dummy = new ListNode(0);
dummy.next = head;
ListNode pre = dummy;
while (pre.next != null) {
if (pre.next.val == val) pre.next = pre.next.next;
else pre = pre.next;
}
return dummy.next;
//为什么不可以直接 return head;还是想不明白
}
}
Approach2:递归
class Solution{
// 3 line recursively solution Runtime: 4 ms, faster than 77.84%
public ListNode removeElements(ListNode head, int val) {
if(head == null){
return null;
}
head.next = removeElements(head.next, val);
if(head.val == val)
return head.next;
return head;//递归的方法
}
}