首页 > 代码库 > [LeetCode] Remove Duplicates from Sorted List II
[LeetCode] Remove Duplicates from Sorted List II
Given a sorted linked list, delete all nodes that have duplicate numbers, leaving only distinct numbers from the original list.
For example, Given 1->2->3->3->4->4->5
, return 1->2->5
. Given 1->1->1->2->3
, return 2->3
.
/** * 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 *p = head, *h = head,*pre; while( h != NULL && h->next != NULL && h->val == h->next->val){ while(p!= NULL && p->next != NULL && p->val == p->next->val){ p = p->next; }//end while p = p->next; h = p; }//end while if(h==NULL) return h; else{ pre = h; p = h->next; } bool flag = 0; while(p!= NULL && p->next != NULL ){ if(p->val != p->next->val && flag == 0){ pre = p; p = p->next; flag = 0; }else if(p->val != p->next->val && flag == 1){ p = p->next; pre->next = p; flag = 0; }else{ p = p->next; flag = 1; } } if(p!=NULL && flag == 1){ pre->next = NULL; } return h; }//end func};
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。