zl程序教程

您现在的位置是:首页 >  后端

当前栏目

82. 删除排序链表中的重复元素 II

链表排序 删除 元素 重复 II 82
2023-09-14 09:06:50 时间

给定一个已排序的链表的头 head , 删除原始链表中所有重复数字的节点,只留下不同的数字 。返回 已排序的链表 。

示例 1:
在这里插入图片描述

输入:head = [1,2,3,3,4,4,5]
输出:[1,2,5]

示例 2:
在这里插入图片描述

输入:head = [1,1,1,2,3]
输出:[2,3]
解题代码如下所示:

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     struct ListNode *next;
 * };
 */


struct ListNode* deleteDuplicates(struct ListNode* head){
    int pre;
    struct ListNode* prendoe=(struct ListNode* )malloc(sizeof(struct ListNode)),*s;
    prendoe->next=NULL;

  s=prendoe;
   while(head){
       struct ListNode* start=head;
       int count=0;
       while(start->val==head->val){
           count++;
           start=start->next;
           if(start==NULL){
              
               break;
           }
               
           }
           if(count>=2){
               head=start;
           }
           else{
               head->next=prendoe->next;
               prendoe->next=head;
               prendoe=prendoe->next;
               head=start;

           }

       }

   
   return s->next;
}