题目链接:Remove Linked List Elements
/**
* 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) {
/*
思路:删除链表节点,肯定要有一个指向其前一个节点的指针,创建一个新节点,指向头结点,遍历链表删除目标节点即可
Time Complexity:O(N)
Space Complexity:O(1)
*/
if(!head)return NULL;
ListNode* pre=new ListNode(0);
ListNode* res=pre;
pre->next=head;
while(head){
if(head->val==val){
pre->next=head->next;
head=head->next;
}
else{
pre=pre->next;
head=head->next;
}
}
return res->next;
}
};
本文介绍了一种从单链表中移除特定值的所有节点的算法实现。使用额外的虚拟头节点简化边界条件处理,并通过一次遍历完成操作。时间复杂度为O(N),空间复杂度为O(1)。
1454

被折叠的 条评论
为什么被折叠?



