题目链接: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;
}
};