标签:.com head lis 重复 while tno png col else
思路:使用两个指针p1和p2遍历链表,p1在前p2在后。若p1指向的值小于p2指向的值,则p2向前走,直到二者不相等,然后更改p1的指针,再将p1和p2都向前走一步,这么做直到p2到达链表尾部。
/** * 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 NULL; ListNode* p1=head; ListNode* p2=head->next; while(p2!= NULL) { while(p2!=NULL && p1->val == p2->val) p2=p2->next; if(p2==NULL) p1->next = NULL; else { p1->next = p2; p1=p2; p2=p2->next; } } return head; } };
LeetCode83 - Remove Duplicates from Sorted List--删除有序链表中重复的元素
标签:.com head lis 重复 while tno png col else
原文地址:http://www.cnblogs.com/vincent93/p/7619979.html