题目:
给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。
思路:
按顺序判断,如果当前位置值和下一个位置的值相等,就用下下个位置的值替换下一个位置。
特殊情况:
指针为空,链表值为空,单元情况
需要注意
1.要记录head的位置用于最后的输出。
2.遇到相等的值时,当前位置指针不要变,判断是否还会出现第三个或更多的重复值。
代码如下:
class Solution {
public:
ListNode* deleteDuplicates(ListNode* head) {
ListNode* head_or = head;
if(!head_or||!head_or->next)
return head_or;
while(head_or->next != NULL) {
if (head_or->val == head_or->next->val)
head_or->next = head_or->next->next;
else head_or = head_or->next;
}
return head;
}
};