-
题目:
删除链表中等于给定值 val 的所有节点。示例: 输入: 1->2->6->3->4->5->6, val = 6 输出: 1->2->3->4->5
链接:https://leetcode-cn.com/problems/remove-linked-list-elements/
-
笔记解析
刷题就TMD是个踩坑的过程,闪一下子却很舒服,因为会有成长~
坑点:
(1)注意有多个要删除的节点链接
例子:【1,2,6,6,6,3,4】解法:将三种类别分开讨论,只要是cur->next->val == val 的就保持cur指针的位置不变,其余情况均向后跳一步
(2)注意整个链表只有一个数,且整个数就是要删除的数
例子:【1,1,1,1,1】解法:将cur->next!=NULL的限制条件放到循环内部
ps:最好将要删除的节点内存释放掉
-
Code
/** * 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) { if(head == NULL) return NULL; ListNode* cur = head; ListNode* tmp = head; ListNode* del = NULL; while(cur){ if(cur->val == val){ tmp = cur->next; cur = cur->next; }else if(cur->next && cur->next->val == val){ del = cur->next; cur->next = del->next; delete del; del = NULL; }else{ cur = cur->next; } } return tmp; } };
【LeetCode 203】移除链表元素
最新推荐文章于 2023-03-17 23:15:18 发布