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