83. Remove Duplicates from Sorted List 从链表中删去数值重复节点
83. Remove Duplicates from Sorted List
Given a sorted linked list, delete all duplicates such that each element appear only once.
For example,
Given 1->1->2
, return 1->2
.
Given 1->1->2->3->3
, return 1->2->3
.
pre指针在后
cur向前扫,扫到不重复的就让节点和pre指向的ListNode连在一起,扫到重复的就继续扫,直到不重复的时候,再和pre指向的ListNode连接
效果是:重新连了一遍,扔掉了重复的节点
1 /** 2 * Definition for singly-linked list. 3 * struct ListNode { 4 * int val; 5 * ListNode *next; 6 * ListNode(int x) : val(x), next(NULL) {} 7 * }; 8 */ 9 10 class Solution { 11 public: 12 ListNode *deleteDuplicates(ListNode *head) { 13 if(head==NULL||head->next==NULL) 14 return head; 15 16 ListNode* pre=head; 17 ListNode* cur=head->next; 18 19 while(cur!=NULL){ 20 if(cur->val==pre->val) { 21 cur=cur->next; 22 }else{ 23 pre->next=cur; 24 pre=cur; 25 cur=cur->next; 26 } 27 } 28 pre->next=NULL; 29 return head; 30 } 31 };