题解 | #删除有序链表中重复的元素-I#
删除有序链表中重复的元素-I
https://www.nowcoder.com/practice/c087914fae584da886a0091e877f2c79
C语言版本
struct ListNode* deleteDuplicates(struct ListNode* head ) {
// write code here
struct ListNode* cur = head; //设置当前节点
struct ListNode* tmp = head->next; //设置当前节点的下一个节点
if(!head) return head; //如果输入为空,则直接返回head
while(cur && tmp){ //当前节点和下一节点不为空,则继续循环
if(tmp->val == cur->val){ //如果下一节点与当前节点值相等,则下一节点继续指向next,跳过此次循环
tmp=tmp->next;
continue;
}
cur->next = tmp; //如果当前节点与tmp(下一节点)的值不相等,则将cur->next指向tmp
cur = cur->next; //更新cur \ tmp
tmp = cur->next;
}
cur->next = NULL; //退出循环后,对于[1,1]的情况可能出现直接返回[1,1],因此需要将cur->next指向空。
//对于[1,1]的输入,由于tmp指向NULL导致退出循环,此时cur->next并没有正常赋值,因此需要退出循环后进行更新cur->next
return head;
}