/**
* 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 * here = head->next,*h = head;
while(here != NULL){
if(head->val == here->val){
here = here->next;
}
else {
head->next = here;
head = head->next;
here - here->next;
}
}
head->next =NULL;
return h;
}
};
快一点的
/**
* 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 * here = head->next,*h = head;
int n = head->val;
while(here != NULL){
if(here->val == n){
here = here->next;
}
else {
h->next=here;
h = h->next;
n=here->val;
here=here->next;
}
}
h->next=NULL;
return head;
}
};
本文介绍了一种高效算法,用于删除单链表中所有重复出现的元素,通过遍历链表并比较节点值来实现。该算法保持了链表原有的顺序,并在删除重复项后返回更新后的链表。

703

被折叠的 条评论
为什么被折叠?



