题目:删除有序链表中重复的元素,对于重复的元素只保留一个。比如Given 1->1->2, return 1->2。Given
1->1->2->3->3, return 1->2->3。
思路:题目很简单,就是设定2个指针,一前一后比较,如果前面指针指向的值和后面的指针指向的值相同,将后面指针指向的元素move掉
class Solution {
public:
ListNode *deleteDuplicates(ListNode *head) {
if(head==NULL){
return NULL;
}
ListNode *p1=head;
ListNode *p2=p1->next;
if(p2==NULL){
return p1;
}
while(p2){
if(p1->val==p2->val){
p1->next=p2->next;
p2=p1->next;
}else{
p2=p2->next;
p1=p1->next;
}
}
return head;
}
};
本文介绍了一种从有序链表中移除重复元素的方法,仅保留每个元素的第一个出现。通过双指针技术,该算法可以高效地遍历链表并删除重复项。

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



