203. Remove Linked List Elements
来源:互联网 发布:java如何制作图片上传 编辑:程序博客网 时间:2024/06/13 07:06
描述:
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.设定一个指向头节点的node节点,再让head节点从这个前导节点开始遍历
class Solution {public: ListNode* removeElements(ListNode* head, int val) { ListNode* temp; temp->next = head; //设定一个前导指针 head = temp; //head现在指向它的前一个指针 while(head->next != NULL){ if(head->next->val == val){ head->next = head->next->next; } else{ head = head->next; } } return temp->next; }};
python:
class Solution(object): def removeElements(self, head, val): temp = ListNode(0) temp.next = head head = temp while head.next != None: if head.next.val == val: head.next = head.next.next else: head = head.next return temp.next
2.逐项考虑情况,主要考虑队头
1.从头部开始的时候如果遇到相等的,直接就可以将head往更新为下一个元素。直到第一个不相等,或者NULL时,跳出循环
2.如果是为NULL就不进入循环,如果是第一个不等元素,直接判断下一个是否相等,相等temp.next = temp.next.next跳过这个相等的元素,否则temp = temp->next;继续下一个判断。
class Solution {public: ListNode* removeElements(ListNode* head, int val) { while(head != NULL && head->val == val){ head = head->next; } //这里把前面的相等元素全剔除掉了,这时候的head是第一个不等于val值的,或者是为NULL ListNode* temp = head; while(temp != NULL && temp->next != NULL){ if(temp->next->val == val){ temp->next = temp->next->next; } else{ temp = temp->next; } } return head; }};
python:
class Solution(object): def removeElements(self, head, val): while head != None and head.val == val: head = head.next temp = ListNode(0) temp = head while temp != None and temp.next != None: if temp.next.val == val: temp.next = temp.next.next else: temp = temp.next 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
- linux查看版本号、更改主机名、位数
- shell脚本中怎样添加多行注释
- 启动项目报错this web application instance has been stopped already.
- form 表单提交不刷新页面
- 最详细的JavaScript和事件解读
- 203. Remove Linked List Elements
- .length .length() .size()的使用方法和区别
- Noj Red packet -1651 (二分)
- PullToRefresh源码分析(I)
- android studio 程序退出提示
- Android资源文件夹名称中的修饰语“sw600dp和sw720dp”等是如何对应到具体设备的?
- Maven依赖机制
- 【HDU 5755】Gambler Bo(高斯消元)
- Parcel了解