您的位置:首页 > 其它

[leetcode]: 203. Remove Linked List Elements

2017-06-03 22:19 295 查看

1.题目

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

2.分析

两种方式:迭代or递归

3.代码

迭代

class Solution {
public:
ListNode* removeElements(ListNode* head, int val) {
if (head == NULL)
return head;
while (head&&head->val == val)//头结点的值就是指定元素
head = head->next;
ListNode* node = head;
while (node&&node->next) {
if (node->next->val == val)
node->next = node->next->next;
else
node = node->next;
}
return head;
}
};
//或者
class Solution {
public:
ListNode* removeElements(ListNode* head, int val) {
if (head == NULL)
return head;
ListNode* node = head;
while (node&&node->next) {
if (node->next->val == val)
node->next = node->next->next;
else
node = node->next;
}
return head->val == val ? head->next : head;
}
};


递归

class Solution {
public:
ListNode* removeElements(ListNode* head, int val) {
if (head == NULL)
return head;
head->next = removeElements(head->next, val);
return head->val == val ? head->next : head;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  leetcode