首页 > 代码库 > LeetCode Remove Duplicates from Sorted List 删除有序链表中的重复结点
LeetCode Remove Duplicates from Sorted List 删除有序链表中的重复结点
1 /** 2 * Definition for singly-linked list. 3 * struct ListNode { 4 * int val; 5 * ListNode *next; 6 * ListNode(int x) : val(x), next(NULL) {} 7 * }; 8 */ 9 class Solution {10 public:11 ListNode *deleteDuplicates(ListNode *head) {12 if(head==0) return 0;13 ListNode *s,*e;14 s=head; //s指向前一个15 e=head->next; //e指向后一个16 while(e){17 if(e->val==s->val){18 s->next=e->next;19 delete(e);20 e=s->next;21 }22 else{23 s=s->next;24 e=e->next;25 }26 }27 return head; 28 }29 };
题意:给出一条链表,已经排序好了,如果有重复的就删除重复的(即每个元素只允许出现一次)。
思路:因为有序了,所以要删的肯定是相邻的几个。把第一个出现的元素保留,第2次以上出现的就删除。两个指针,一个指向前一元素,一个指向后一元素。逐个判断到结束。
注意:此题用一个指针也是可以解决的,当然,一个两个所占内存区别不大,就用两个比较直观了。
LeetCode Remove Duplicates from Sorted List 删除有序链表中的重复结点
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。