《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.移除链表元素的主要内容,如果未能解决你的问题,请参考以下文章