删除链表的重复元素C++
删除有序链表中重复的元素-I
https://www.nowcoder.com/practice/c087914fae584da886a0091e877f2c79
调试了好多遍才通过
/**
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
class Solution {
public:
/**
*
* @param head ListNode类
* @return ListNode类
*/
ListNode* deleteDuplicates(ListNode* head) {
// write code here
if((head==NULL)||(head->next==NULL)){
return head;
}
ListNode* left=head;
ListNode* right=head->next;
while(right!=NULL){
if(left->val==right->val){
left->next=right->next;
right=right->next;
}
else{
left=left->next;
}
}
return head;
}
};
注意事项:
- 针对只有一个元素的测试用例,需要在入口参数判断处加上head->next==NULL
- 针对有连续多个重复元素,特别要注意双指针并非每次都是同步移动的,右指针在每次删除一个重复元素之后就要步进一个位置,而做指针只有当相邻元素不重复才能步进。