【一天一道Leetcode】#203.Remove Linked List Elements

来源:互联网 发布:股票量化软件 编辑:程序博客网 时间:2024/06/06 21:22

一天一道LeetCode

本系列文章已全部上传至我的github,地址:ZeeCoder‘s Github

欢迎大家关注我的新浪微博,我的新浪微博

我的个人博客已创建,欢迎大家持续关注!

一天一道leetcode系列依旧在csdn上继续更新,除此系列以外的文章均迁移至我的个人博客

另外,本系列文章已整理并上传至gitbook,网址:点我进

欢迎转载,转载请注明出处!

(一)题目

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

(二)解题

题目大意:删除单向链表中的与给定值相等的节点。

解题思路:题目很简单,但是需要注意一下几点:

  • 考虑到如果删除头节点需要更新头节点
  • 考虑连续删除的情况

代码实现如下:

/** * 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* pre = NULL;        ListNode* p = head;        while(p){            if(p->val==val){//与给定值相等                while(p&&p->val==val) p=p->next;//连续相等的情况                if(pre==NULL) head = p;//如果需要删除头节点,则需要更新头节点                else pre->next = p;            }            else{                pre = p;                p=p->next;            }        }        return head;    }};
0 0
原创粉丝点击