首页 > 代码库 > LintCode 删除排序链表中的重复元素
LintCode 删除排序链表中的重复元素
删除排序链表中的重复元素
给定一个排序链表,删除所有重复的元素每个元素只留下一个。
样例
给出 1->1->2->null
,返回 1->2->null
给出 1->1->2->3->3->null
,返回 1->2->3->null
标签
思路
遍历树,得到根节点到目标节点的路径。
节点A和B分别得到两个路径数组pathA和pathB。
A和B的最近公共祖先则是两个数组中第一个不同的节点。
1 /** 2 * Definition of ListNode 3 * class ListNode { 4 * public: 5 * int val; 6 * ListNode *next; 7 * ListNode(int val) { 8 * this->val = val; 9 * this->next = NULL; 10 * } 11 * } 12 */ 13 class Solution { 14 public: 15 /** 16 * @param head: The first node of linked list. 17 * @return: head node 18 */ 19 ListNode *deleteDuplicates(ListNode *head) { 20 // write your code here 21 if(NULL == head) 22 return NULL; 23 24 ListNode *p1=head, *p2=head->next; 25 26 if(NULL == p2) 27 return head; 28 29 while(p2 != NULL) { 30 if(p1->val == p2->val) { 31 p1->next = p2->next; 32 p2 = p2->next; 33 } 34 else { 35 p1 = p1->next; 36 p2 = p2->next; 37 } 38 } 39 return head; 40 } 41 };
LintCode 删除排序链表中的重复元素
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。