本文主要是介绍代码随想录训练营第三天 203移除链表元素,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
第一题
原题链接:203. 移除链表元素 - 力扣(LeetCode)
思路:
首先定义一个虚拟头结点,然后让虚拟头节点指向head。这个虚拟头节点的next就是我们要返回的答案,因此我们不能用这个虚拟头节点直接去移动,需要在定义一个cur节点指向虚拟头节点。
细节,我们在遍历的时候直接判断cur -> next 是否为空,不为空则判断cur -> next 的值是否为要移除的元素,是则cur -> next = cur -> next -> next; 否则cur = cur -> next;
代码如下:
/*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode() : val(0), next(nullptr) {}* ListNode(int x) : val(x), next(nullptr) {}* ListNode(int x, ListNode *next) : val(x), next(next) {}* };*/
class Solution {
public:ListNode* removeElements(ListNode* head, int val) {ListNode* dummy = new ListNode(0);dummy -> next = head;ListNode* cur = dummy;while(cur -> next != nullptr){if(cur -> next -> val == val){cur -> next = cur -> next -> next;}else{cur = cur -> next;} }return dummy -> next;}
};
这篇关于代码随想录训练营第三天 203移除链表元素的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!