題目:
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; } }
沒有留言:
張貼留言