问题:
https://leetcode.com/problems/remove-duplicates-from-sorted-list/?tab=Description
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.
给定一个有序链表,删除所有重复元素,使得每个元素只出现一次。
例如, 给定1->1->2,返回1->2。 给定1->1->2->3->3,返回1->2->3。
分析:
循环检测,如果两个元素值相同,就删掉一个。
参考C++代码:
/**
* 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) {
ListNode* h=new ListNode(0);
h->next=head;
if(head==NULL) return NULL;
for(ListNode* p=h;p->next!=NULL;p=p->next){
while(p->next->next!=NULL && p->next->val==p->next->next->val )
p->next=p->next->next;
}
return h->next;
}
};