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

简介: 1.先定义一个节点指向该链表的头节点-s,再定义一个节点指向该链表的第二个节点-p.2.当链表为空或者链表中只有一个节点时返回头节点.3.当q不为空的时候进入循环,判断p->val是否与s->val是否相同,相同的话,令p = p->next,s->next = p;否则的话往后遍历 。

83. 删除排序链表中的重复元素 - 力扣(LeetCode)

00f40d5fcf33a40a0b36e143ad58b875_4197a2005b4a48a19607c36e5271c173.png

思路:

1.先定义一个节点指向该链表的头节点-s,再定义一个节点指向该链表的第二个节点-p.

2.当链表为空或者链表中只有一个节点时返回头节点.

3.当q不为空的时候进入循环,判断p->val是否与s->val是否相同,相同的话,令p = p->next,s->next = p;否则的话往后遍历


代码实现(以力扣为例):

struct ListNode* deleteDuplicates(struct ListNode* head){
    if(head == NULL || head->next == NULL)
    {
        return head;
    }
    struct ListNode* p = head,* q = head->next;
    while(q)
    {
        if(p->val == q->val)
        {
            q = q->next;
            p->next = q; 
        }
        else
        {
            p = q;
            q = q->next;
        }
    }
    return head;
}


目录
相关文章
|
1天前
《剑指offer》——合并两个排序的链表
《剑指offer》——合并两个排序的链表
|
1天前
【移除链表元素】LeetCode第203题讲解
【移除链表元素】LeetCode第203题讲解
|
1天前
|
Java C语言
剑指offer(牛客)——合并两个排序的链表
剑指offer(牛客)——合并两个排序的链表
8 1
|
1天前
leetcode代码记录(移除链表元素
leetcode代码记录(移除链表元素
10 0
|
1天前
|
存储
三种方法实现获取链表中的倒数第n个元素
三种方法实现获取链表中的倒数第n个元素
15 0
|
1天前
【力扣】148. 排序链表
【力扣】148. 排序链表
|
1天前
【力扣】83. 删除排序链表中的重复元素、82. 删除排序链表中的重复元素Ⅱ
【力扣】83. 删除排序链表中的重复元素、82. 删除排序链表中的重复元素Ⅱ
|
1天前
|
算法
LeetCode刷题---19. 删除链表的倒数第 N 个结点(双指针-快慢指针)
LeetCode刷题---19. 删除链表的倒数第 N 个结点(双指针-快慢指针)
|
1天前
|
存储
LeetCode刷题---817. 链表组件(哈希表)
LeetCode刷题---817. 链表组件(哈希表)
|
1天前
|
算法 安全 数据处理
LeetCode刷题---707. 设计链表(双向链表-带头尾双结点)
LeetCode刷题---707. 设计链表(双向链表-带头尾双结点)