0
点赞
收藏
分享

微信扫一扫

LeetCode】Easy | 83. 删除排序链表中的重复元素(双指针)

苦茶如歌 2022-02-05 阅读 60

题目:

给定一个已排序的链表的头 head , 删除所有重复的元素,使每个元素只出现一次 。返回 已排序的链表 。

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

输入:head = [1,1,2]
输出:[1,2]

示例 2:

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

提示:

  • 链表中节点数目在范围 [0, 300] 内
  • -100 <= Node.val <= 100
  • 题目数据保证链表已经按升序 排列

思路:

在这里插入图片描述

代码:

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


struct ListNode* deleteDuplicates(struct ListNode* head){
    struct ListNode*n1=head;
    struct ListNode*n2=head;
    if(head==NULL)
    return NULL;
    n2=n2->next;
    while(n2)
    {
        if(n1->val==n2->val)
        {
            n1->next=n2->next;
            n2->next=NULL;
            free(n2);
            n2=n1->next;
        }
        else
        {
            n2=n2->next;
            n1=n1->next;
        }
    }
    return head;
}
举报

相关推荐

0 条评论