标签:
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、从头到尾遍历链表,如果前后两个结点相同,则将第一个结点指向它的下下结点,并删除它的下个结点。
2、递归思想。
/** * 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 *lst=head; ListNode *del; while(lst && lst->next){ if(lst->val==lst->next->val){ del=lst->next; lst->next=lst->next->next; delete(del); } else lst=lst->next; } return head; } };
/** * 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 || head->next==NULL) return head; if(head->val==head->next->val) head=deleteDuplicates(head->next); else head->next=deleteDuplicates(head->next); return head; } };
(LeetCode 83)Remove Duplicates from Sorted Lists
标签:
原文地址:http://www.cnblogs.com/AndyJee/p/4464233.html