21-3-26 力扣每日刷题 83. 删除排序链表中的重复元素

存在一个按升序排列的链表,给你这个链表的头节点 head ,请你删除所有重复的元素,使每个元素 只出现一次 。

返回同样按升序排列的结果链表。

示例 1:
21-3-26 力扣每日刷题 83. 删除排序链表中的重复元素_第1张图片

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

示例 2:

![在这里插入图片描述](https://img-blog.csdnimg.cn/20210326182059526.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0hhcnN3bGdi,size_16,color_FFFFFF,t_70)

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

提示:

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

今天的题目感觉应该和昨天对调一下,这个要求简单些,只需要在遍历时遇到与下一节点不同的值时,添加至有些链表中即可
下附代码

class Solution {
    public ListNode deleteDuplicates(ListNode head) {
            if(head==null) return head;
            ListNode dummy = new ListNode(-101);//虚拟头节点
            ListNode tail=dummy;
            while (head!=null){
                if(head.next==null || head.val!=head.next.val){
                    tail.next=head;
                    tail=tail.next;
                }
                head=head.next;
            }
            tail.next=null;
            return  dummy.next;
    }
}

此文章创于本人学习时的记录,如有错误或更优解还请指出

你可能感兴趣的:(算法)