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

Zhaolove / 2024-10-29 / 原文

题目

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

示例 1:

img

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

示例 2:

img

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

提示:

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

分析

代码

class Solution {
    public ListNode deleteDuplicates(ListNode head) {
        //判断head是否为空
        if(head==null){
            return head;
        }
       
        ListNode p=head; //p指向第一个结点
        while(p.next !=null){
            if(p.val==p.next.val){  //判断前后节点的值是否相等
                p.next=p.next.next; //删除相同的元素的结点
            }else{
                  p=p.next;//不相等就指向下一个结点
            }
        }

        return head;
    }
}