题解 | #删除有序链表中重复的元素-I#
删除有序链表中重复的元素-I
https://www.nowcoder.com/practice/c087914fae584da886a0091e877f2c79
/**
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param head ListNode类
* @return ListNode类
*/
struct ListNode* deleteDuplicates(struct ListNode* head ) {
// write code here
if(head==NULL ||head->next==NULL)//首先,判断链表是否为空或者只有一个节点。如果是,则直接返回原链表头节点 head。
{
return head;
}
struct ListNode *current=head;//创建一个指针 current,初始化为链表头节点 head
while(current->next!=NULL){//使用循环遍历链表,直到 current 的下一个节点为 NULL
if(current->val==current->next->val){//在循环中,判断 current 的值是否与下一个节点的值相等。
struct ListNode *duplicate=current->next;//如果相等,说明存在重复元素。创建一个指针 duplicate,指向下一个节点,
current->next=current->next->next;//然后将 current 的 next 指针指向下下个节点,即跳过重复节点
free(duplicate);
}else{
current=current->next;//如果不相等,说明没有重复元素,将 current 指针移动到下一个节点
}
}
return head;//循环结束后,返回原链表的头节点 head
}

查看5道真题和解析