1、相似题
class Solution {
public:ListNode* deleteDuplicates(ListNode* head) {//判空if(head == NULL )return nullptr;ListNode* p1 = head;ListNode* p2 = p1->next;while(p2){if(p1->val != p2->val){p1->next = p2;p1 = p1->next;}p2 = p2->next;}p1->next = p2;return head;}
};
2、JZ76 删除链表中重复的节点
/*
struct ListNode {int val;struct ListNode *next;ListNode(int x) :val(x), next(NULL) {}
};
*/
class Solution {
public:ListNode* deleteDuplication(ListNode* pHead) {if(pHead == NULL ) return nullptr;ListNode* p = new ListNode(-1);p->next = pHead;ListNode* p1 = p;while(p1->next){//设置p2指向p1的下一个的下一个节点ListNode* p2 = p1->next->next;//当p2不为空 且 p1的下一个的下一个节点的值等于p2的值 时循环while(p2 && p1->next->val == p2->val)p2 = p2->next; //p2往后移动//判断p2是否往后移动,如果没有,则说明没有相同的节点出现,让p1往后移动if(p1->next->next == p2) p1 = p1->next;//如果p2往后移动,就说明出现了重复的节点//那么p1和p2之间的节点就都是重复的节点,都是需要删除的节点elsep1->next = p2;}return p->next;}
};