描述

删除给出链表中的重复元素(链表中元素从小到大有序),使链表中的所有元素都只出现一次
例如:
给出的链表为1->1->2,返回1->2.
给出的链表为1→1→2→3→3,返回1→2→3.

示例1

输入:
{1,1,2}

返回值:
{1,2}

思路

这个就是对链表进行遍历,没遍历到一个元素时,就判断该节点往后是否有重复的,如果有重复的,就一直往后走,直到遇到不重复元素为止,然后删除中间的重复元素即可。
图片说明

AC 代码

public ListNode deleteDuplicates (ListNode head) {
        // write code here
        if (head == null) {
            return head;
        }
        ListNode node = new ListNode(0);
        node.next = head;
        while (head != null && head.next != null) {
            // 当 head 与 next 节点相等时,一直往后走
            while (head.next != null && head.val == head.next.val) {
                 head.next = head.next.next;
            }
            // 删除中间重复的元素
            head = head.next;
        }
        return node.next;
    }
  • 时间复杂度:O(n),n 为链表长度
  • 空间复杂度:O(1)

最后

大家可以去 【牛客网-题库-在线编程】去练习一下。
可以去微信搜索:【蘑菇睡不着】交个朋友~
也可以扫描下方二维码。

图片说明