码迷,mamicode.com
首页 > 其他好文 > 详细

leetcode203. 移除链表元素

时间:2019-11-17 21:01:17      阅读:62      评论:0      收藏:0      [点我收藏+]

标签:ret   pre   lse   span   leetcode   lis   return   元素   move   

方法一(删除头结点时另做考虑)

class Solution {
public:
    ListNode* removeElements(ListNode* head, int val) {
        
        if(head!=NULL && head->val==val)
        {
            head=head->next;
        }
        if(head==NULL) return NULL;
        //处理第一位是val的情况
        while(head->val==val)
        {
            head=head->next;
            if(head==NULL) return NULL;
        }
        ListNode *curr=head->next;
        ListNode *pre=head;
        while(curr!=NULL)
        {
           
            if(curr->val==val)
            {
                pre->next=curr->next;
            }
            else
                pre=curr;
            curr=curr->next;
        }
        return head;
        
    }
};

方法二(添加一个虚拟头结点)

class Solution {
public:
    ListNode* removeElements(ListNode* head, int val) {
        
        
        ListNode* vir=new ListNode(-1);
        vir->next=head;
        ListNode *pre=vir;
        while(pre->next!=NULL)
        {
           
            if(pre->next->val==val)
            {
                pre->next=pre->next->next;
            }
            else
                pre=pre->next;
        }
        return vir->next;
        
    }
};

方法三(递归)

class Solution {
    public ListNode removeElements(ListNode head, int val) {
       if(head==null)
           return null;
        head.next=removeElements(head.next,val);
        if(head.val==val){
            return head.next;
        }else{
            return head;
        }
    }
}

 

leetcode203. 移除链表元素

标签:ret   pre   lse   span   leetcode   lis   return   元素   move   

原文地址:https://www.cnblogs.com/renzmin/p/11877784.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!