leetcode-83 删除排序链表中的重复元素(RemoveDuplicatesFromSortedList)-java

本文介绍了一种算法,用于删除排序链表中的重复元素,确保每个元素仅出现一次。通过遍历链表并比较相邻节点值来实现,若发现重复则调整指针跳过重复节点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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

 
public ListNode deleteDuplicates(ListNode head) {
    if (head == null || head.next == null)
        return head;
    ListNode node = head;
    while (node.next != null) {
        if (node.val == node.next.val) {
            node.next = node.next.next;
        } else {
            node = node.next;
        }
    }
    return head;
}

边界值判断:

head == null //空链表,无重复,不需要操作,返回null即head

head.next == null //只有一个节点的链表,无重复,返回head

变量注释:

node //循环变量,出初始值为head

解题思路:

第一个节点head不发生重复

从前往后遍历,循环条件:node.next != null

(1)如果下一个节点元素 与 当前节点元素 发生重复,将重复的 下一个节点 移出链表;

node.next = node.next.next; //node.next  指向 重复的节点 的下一个节点,移除重复的节点。

(2)如果没有重复,继续往后遍历node= node.next;

最后返回head  // 上面的操作全部在node上,head 始终指向链表的头结点


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值