LeetCode OJ 之 Remove Linked List Elements(删除链表中的元素)
2015-06-02 10:55
351 查看
题目:
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
思路:
1、迭代2、递归
代码1:
/*** 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);//虚拟头结点,因为有可能把原链表的头结点删掉
ListNode *p1 = dummy , *p2 = head;
while(p2)
{
if(p2->val == val)
{
ListNode *tmp = p2;
p2 = p2->next;
delete tmp;
}
else
{
p1->next = p2;
p1 = p1->next;
p2 = p2->next;
}
}
p1->next = NULL;//这一步很重要,切记
return dummy->next;
}
};
代码2:
/*** 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 == NULL)
return head;
head->next = removeElements(head->next , val);
return head->val == val ? head->next : head;
}
};
相关文章推荐
- iOS学习(1)——UIButton
- 考生备考分享:SAT阅读提分技巧
- Leetcode Kth Largetst element
- Python challenge攻关0-5
- Erlang — gen_server
- 优化UITableViewCell高度计算的那些事
- activiti获取用户任务同时查询流程变量 null pointer问题解决。
- 2015-6-2-提高你的Vim效率
- Pool of Argument Topics 11-20
- sz与rz命令
- Oracle表分区(经典)
- Apache FileUpload详细介绍
- Javascript中正则表达式详解(转载)
- 多余预留清除方法
- ARM GCC中内联汇编语法
- visaul studio 2013部分快捷键
- NoSQL的价值到底在哪里?
- 54. C# -- 泛型(Generic)
- Node.js事件发射器
- C/C++中qsort()以及sort()的用法