203. Remove Linked List Elements
来源:互联网 发布:喊麦声卡软件 编辑:程序博客网 时间:2024/05/16 04:44
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
为了最后能return修改后的链表,所以我们创建了一个总头dummy,来指向原来链表的head,然后再创造俩个指针,一前一后用来比较
/** * 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(0); dummy->next = head; ListNode* p = dummy; ListNode* q = head; while(q!=NULL) { if(q->val == val) p->next = q->next; else p = p->next; q = q->next; } return dummy->next; }};
思路2
和上面相反的方法,不用记录Head
新建一个指针来代替head移动,然后释放删除节点。最后再比较第一个节点,然后正好返回Head
class Solution {public: ListNode* removeElements(ListNode* head, int val) { if (head==NULL){ return head; } ListNode* p=head; while(p->next!=NULL){ if (p->next->val == val){ auto freeNode = p->next; p->next = p->next->next; free(freeNode); } else{ p=p->next; } } if (head->val==val) head=head->next; return head; }};
思路3
递归撒
class Solution {public: ListNode* removeElements(ListNode* head, int val) { if (head == NULL) return NULL; if (val == head->val) return removeElements(head->next,val); head->next = removeElements(head->next,val); return head;}};
0 0
- 203. Remove Linked List Elements(Linked List)
- 203. Remove Linked List Elements
- 203. Remove Linked List Elements
- 203. Remove Linked List Elements
- 203. Remove Linked List Elements
- 203. Remove Linked List Elements
- 203. Remove Linked List Elements
- 203. Remove Linked List Elements
- 203. Remove Linked List Elements
- 203. Remove Linked List Elements
- 203. Remove Linked List Elements
- 203. Remove Linked List Elements
- 203. Remove Linked List Elements
- 203. Remove Linked List Elements
- 203. Remove Linked List Elements
- 203. Remove Linked List Elements
- 203. Remove Linked List Elements
- 203. Remove Linked List Elements
- JedisConnectionException: java.net.ConnectException: Connection refused: connect
- 取数字
- Android TextureView 和 SurfaceView 对比浅析
- 设备管理器
- 我的第一篇博客
- 203. Remove Linked List Elements
- Contiki在CC2530上的内核移植
- [BZOJ2811][Apio2012]Guard(线段树+贪心+二分)
- Unity+Vuforia 防抖动解决方案
- iOS category内部实现原理
- 【git】日志更改
- 剑指offer 面试题10:二进制中1的个数 题解
- 详解新创建的安卓项目下的各个文件夹用途
- Android Studio 进阶详细配置