LintCode-112.删除排序链表中的重复元素

删除排序链表中的重复元素

给定一个排序链表,删除所有重复的元素每个元素只留下一个。

样例

给出 1->1->2->null,返回 1->2->null
给出 1->1->2->3->3->null,返回 1->2->3->null

标签

链表

思路

遍历树,得到根节点到目标节点的路径。
节点A和B分别得到两个路径数组pathA和pathB。
A和B的最近公共祖先则是两个数组中第一个不同的节点。

code

/**
* Definition of ListNode
* class ListNode {
* public:
* int val;
* ListNode next;
* ListNode(int val) {
* this->val = val;
* this->next = NULL;
* }
* }
/
class Solution {
public:
/

* @param head: The first node of linked list.
* @return: head node
*/
ListNode *deleteDuplicates(ListNode *head) {
// write your code here
if(NULL == head)
return NULL;

ListNode *p1=head, *p2=head->next;

if(NULL == p2)
return head;

while(p2 != NULL) {
if(p1->val == p2->val) {
p1->next = p2->next;
p2 = p2->next;
}
else {
p1 = p1->next;
p2 = p2->next;
}
}
return head;
}
};

posted @ 2017-05-04 17:11  LiBaoquan  阅读(299)  评论(0)    收藏  举报