題目:
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
找到含有目標值的節點並刪除。
這題也卡了有點久,原本是想設一個tempNodePointer指向開頭或結尾的節點,檢查完有目標值就刪掉換下一個,但問題出在,如果沒有目標值,只是純粹換下一個,會把原本的節點給蓋掉。
所以後來選擇比較不直觀的遞迴解。
所以後來選擇比較不直觀的遞迴解。
Accepted Solution:
C#public class Solution {
public ListNode RemoveElements(ListNode head, int val) {
if (head!=null) //該點為空直接傳回null
{
while(head.val == val) //如果該點含目標值
{
//刪掉該點
if(head.next!=null)head = head.next;
else {
head=null;
return null;
}
}
//對該點的下一點做同樣的事
head.next=RemoveElements(head.next, val);
}
else return null;
return head;
}
}
沒有留言:
張貼留言