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

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

题解(java)

class Solution {
    public ListNode deleteDuplicates(ListNode head) {
        ListNode current = head;
        while(current != null && current.next != null){
            if(current.next.val == current.val){
                current.next = current.next.next;
            }else{
                current = current.next;
            }
        }
        return head;
    }
}

在这里插入图片描述

方法

遍历进行比较

详解

  • 因为这是删除排序链表中的重复元素,所以不用担心乱序问题,即重复元素都在相邻的节点中
  • 其中 head 指头结点,current 负责具体操作。如果直接用头结点进行操作,head 当前的地址值将会改变,导致再返回链表时无法找到头结点而无法返回链表。
    【如果结果返回值不是链表时,可以直接使用头结点进行操作,但不建议这么做】
  • 遍历终止条件:当前及下一个结点都不为空时
    【为了使代码逻辑更加严谨,最好加上对当前节点的判断】
  • 判断时,判断的使元素的值,移动的是节点的指针。
    【1>.当前结点的元素值和下一个结点的元素值相同时,删除当前元素的下一个结点;
    2>.不同时,顺移 current 再进行判断】

难点

  • 读题:注意是 ¥排序¥ 链表。

声明

  • 原作者:E.L.E
  • <未经允许不得转载使用,欢迎大家评论>
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值