1. 程式人生 > >#Leetcode# 203. Remove Linked List Elements

#Leetcode# 203. Remove Linked List Elements

https ret open 分享 size 技術分享 view leet lin

https://leetcode.com/problems/remove-linked-list-elements/

Remove all elements from a linked list of integers that have value val.

Example:

Input:  1->2->6->3->4->5->6, val = 6
Output: 1->2->3->4->5

遞歸代碼:

技術分享圖片
/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 
*/ class Solution { public: ListNode* removeElements(ListNode* head, int val) { if(!head) return NULL; head -> next = removeElements(head -> next, val); return head -> val == val ? head -> next : head; } };
View Code

非遞歸代碼:

技術分享圖片
/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 
*/ class Solution { public: ListNode* removeElements(ListNode* head, int val) { ListNode *dummy = new ListNode(-1), *pre = dummy; dummy -> next = head; while(pre -> next) { if(pre -> next -> val == val) { ListNode *t = pre -> next; pre
-> next = t -> next; t -> next = NULL; delete t; } else pre = pre -> next; } return dummy -> next; } };
View Code

被鏈表支配的上午

#Leetcode# 203. Remove Linked List Elements