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

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

题目链接

leetcode

题目描述

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

示例 1:

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

示例 2:

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

提示:

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

题目解法

分析:链表是已经排好序的,相同的元素的位置肯定是连续的,把链表遍历,判断相邻的两个元素是否相等,相等就删了后一个元素,不相等就把当前位置指向下一个元素的位置。

时间复杂度O(n)

public ListNode deleteDuplicates(ListNode head) {
        if(head == 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;
            }
        }
   		//为什么返回head,而不是返回node呢?因为是值传递,node值改变,head值也跟着改变,head在头部不动,node已经移到最后
        return head;
    }

/**
	class ListNode {
    int val;
    ListNode next;

    ListNode() {
    }

    ListNode(int val) {
        this.val = val;
    }

    ListNode(int val, ListNode next) {
        this.val = val;
        this.next = next;
    }
}
*/

posted @   China熊孩子  阅读(162)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!

阅读目录(Content)

此页目录为空

点击右上角即可分享
微信分享提示