[LintCode] Remove Linked List Elements 移除链表元素

简介:

Remove all elements from a linked list of integers that have value val.

Given 1->2->3->3->4->5->3, val = 3, you should return the list as 1->2->4->5

LeetCode上的原题,请参见我之前的博客Remove Linked List Elements

解法一:

class Solution {
public:
    /**
     * @param head a ListNode
     * @param val an integer
     * @return a ListNode
     */
    ListNode *removeElements(ListNode *head, int val) {
        ListNode *dummy = new ListNode(-1), *pre = dummy;
        dummy->next = head;
        while (pre->next) {
            if (pre->next->val == val) {
                ListNode *t = pre->next;
                pre->next = t->next;
                t->next = NULL;
            } else {
                pre = pre->next;
            }
        }
        return dummy->next;
    }
};

解法二:

class Solution {
public:
    /**
     * @param head a ListNode
     * @param val an integer
     * @return a ListNode
     */
    ListNode *removeElements(ListNode *head, int val) {
        if (!head) return NULL;
        head->next = removeElements(head->next, val);
        return head->val == val ? head->next : head;
    }
};

本文转自博客园Grandyang的博客,原文链接:移除链表元素[LintCode] Remove Linked List Elements ,如需转载请自行联系原博主。

相关文章
|
6月前
【力扣】-- 移除链表元素
【力扣】-- 移除链表元素
66 1
01_移除链表元素
01_移除链表元素
LeetCode第83题删除排序链表中的重复元素
文章介绍了LeetCode第83题"删除排序链表中的重复元素"的解法,使用双指针技术在原链表上原地删除重复元素,提供了一种时间和空间效率都较高的解决方案。
LeetCode第83题删除排序链表中的重复元素
|
6月前
【LeetCode 06】203.移除链表元素
【LeetCode 06】203.移除链表元素
55 0
|
8月前
|
【数据结构】c语言链表的创建插入、删除、查询、元素翻倍
【数据结构】c语言链表的创建插入、删除、查询、元素翻倍
102 0
【数据结构】c语言链表的创建插入、删除、查询、元素翻倍
LeetCode力扣第114题:多种算法实现 将二叉树展开为链表
LeetCode力扣第114题:多种算法实现 将二叉树展开为链表
【经典算法】Leetcode 141. 环形链表(Java/C/Python3实现含注释说明,Easy)
【经典算法】Leetcode 141. 环形链表(Java/C/Python3实现含注释说明,Easy)
87 2
|
11月前
<数据结构>五道LeetCode链表题分析.环形链表,反转链表,合并链表,找中间节点.
<数据结构>五道LeetCode链表题分析.环形链表,反转链表,合并链表,找中间节点
108 1
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等