/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
ListNode* deleteDuplicates(ListNode* head) {
if (head == NULL)
return head;
ListNode* voidptr = new ListNode(0);
// 在链表前面加一个头结点
voidptr->next = head;
// 定义三个节点操作链表
ListNode* curNode = head->next;
ListNode* lastNode = head;
ListNode* llastNode = voidptr;
while(curNode != NULL){
if (curNode->val == lastNode->val){
// 这里一直循环找到不等于lastNode节点值的节点
while(curNode != NULL && curNode->val == lastNode->val)
curNode = curNode->next;
llastNode->next = curNode;
lastNode = curNode;
if (curNode != NULL)
curNode = curNode->next;
}else{
llastNode = llastNode->next;
lastNode = lastNode->next;
curNode = curNode->next;
}
}
// 最后返回头结点的下一个节点
return voidptr->next;
}
};
static int x=[](){
std::ios::sync_with_stdio(false);
cin.tie(NULL);
return 0;
}();
LetCode 82. 删除排序链表中的重复元素 II
最新推荐文章于 2022-10-22 15:27:15 发布