博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
203. Remove Linked List Elements
阅读量:4222 次
发布时间:2019-05-26

本文共 2133 字,大约阅读时间需要 7 分钟。

描述:

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

总结:

在遇见单项链表问题的时候,第一时间要考虑到构造一个前导指针(指向当前元素的元素),用前导指针来操作当前元素,简单明了

转载地址:http://cemmi.baihongyu.com/

你可能感兴趣的文章
展现自己的人生智慧
查看>>
深入理解java多态性
查看>>
Java新手进阶:细说引用类型
查看>>
osg中使用MatrixTransform来实现模型的平移/旋转/缩放
查看>>
(一) Qt Model/View 的简单说明
查看>>
(二)使用预定义模型 QStringListModel例子
查看>>
UVM:7.4.5 加入存储器
查看>>
UVM:7.5.1 期望值与镜像值
查看>>
UVM:7.5.2 常用操作及其对期望值和镜像值的影响
查看>>
UVM:7.6.1 检查后门访问中hdl 路径的sequence
查看>>
UVM:7.6.2 检查默认值的sequence
查看>>
UVM:7.7.1 使用reg_predictor
查看>>
UVM:7.7.2 使用UVM_PREDICT_DIRECT功能与mirror 操作
查看>>
UVM:7.7.3 寄存器模型的随机化与update
查看>>
UVM:7.7.4 扩展位宽
查看>>
UVM:7.8.1 get_root_blocks
查看>>
UVM:7.8.2 get_reg_by_offset 函数
查看>>
UVM:8.1.1 任务与函数的重载
查看>>
UVM:8.1.2 约束的重载
查看>>
UVM:8.2.2 重载的方式及种类
查看>>