一、問題描述
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
二、問題分析
因爲可能會刪除head節點,所以可以額外增加一個頭結點,便於控制。剩下的就是遍歷鏈表,因爲刪除某個節點的時候需要把之前的節點鏈到被刪的後面,因此需要兩個指針來處理。
三、Java AC代碼
public ListNode removeElements(ListNode head, int val) {
ListNode dummy = new ListNode(0);
dummy.next = head;
ListNode p = dummy;
ListNode q = head;
while(q!=null){
if (q.val == val) {
p.next = q.next;
}else {
p = p.next;
}
q = q.next;
}
return dummy.next;
}