题目:
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
解法一:
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */ public class Solution { public ListNode removeElements(ListNode head, int val) { if(head==null) return null; ListNode dummy=new ListNode(0); dummy.next=head; ListNode pre=dummy; ListNode cur=head; while(cur!=null){ if(cur.val==val){ pre.next=cur.next; cur=cur.next; }else{ pre=cur; cur=cur.next; } } return dummy.next; } }
解法二:
public ListNode removeElements(ListNode head, int val) { if (head == null) return null; head.next = removeElements(head.next, val); return head.val == val ? head.next : head; }
reference:
http://www.senonweb.com/?p=517
http://bookshadow.com/weblog/2015/04/24/leetcode-remove-linked-list-elements/