《LeetCode之每日一题》:286.移除链表元素

Posted Mascotttttt

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了《LeetCode之每日一题》:286.移除链表元素相关的知识,希望对你有一定的参考价值。

移除链表元素


题目链接: 移除链表元素

有关题目

给你一个链表的头节点 head 和一个整数 val ,
请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点 。

示例 2:

输入:head = [], val = 1
输出:[]
示例 3:

输入:head = [7,7,7,7], val = 7
输出:[]
提示:

列表中的节点数目在范围 [0, 10^4]1 <= Node.val <= 50
0 <= val <= 50

题解

法一:递归
参考官方题解

/**
 * Definition for singly-linked list.
 * struct ListNode 
 *     int val;
 *     struct ListNode *next;
 * ;
 */


struct ListNode* removeElements(struct ListNode* head, int val)
    if (head == NULL) 
        return NULL;
    
    head->next = removeElements(head->next, val);

    return head = head->val == val ? head->next : head;

法二:迭代
参考官方题解

/**
 * Definition for singly-linked list.
 * struct ListNode 
 *     int val;
 *     struct ListNode *next;
 * ;
 */


struct ListNode* removeElements(struct ListNode* head, int val)
    struct ListNode *dummy = (struct ListNode*)malloc(sizeof(struct ListNode));

    dummy->next = head;

    struct ListNode *pre = dummy;
    while(pre->next != NULL)
    
        if (pre->next->val == val)
        
            pre->next = pre->next->next;
        
        else 
        
            pre = pre->next;
        
    

    return dummy->next;

以上是关于《LeetCode之每日一题》:286.移除链表元素的主要内容,如果未能解决你的问题,请参考以下文章

《LeetCode之每日一题》:134.移除链表元素

leetcode每日一题(203.移除链表的元素)

Java算法 每日一题 编号203:移除链表元素

Java算法 每日一题 编号203:移除链表元素

Java算法 每日一题 编号203:移除链表元素

LeetCode每日一题刷题总结