美文网首页
113. 删除排序链表中的重复数字 II

113. 删除排序链表中的重复数字 II

作者: 6默默Welsh | 来源:发表于2018-03-19 12:08 被阅读14次

    描述

    给定一个排序链表,删除所有重复的元素只留下原链表中没有重复的元素。

    样例

    给出 1->2->3->3->4->4->5->null,返回 1->2->5->null
    给出 1->1->1->2->3->null,返回 2->3->null

    代码

    /**
     * Definition for ListNode
     * public class ListNode {
     *     int val;
     *     ListNode next;
     *     ListNode(int x) {
     *         val = x;
     *         next = null;
     *     }
     * }
     */
    
    public class Solution {
        /**
         * @param head: head is the head of the linked list
         * @return: head of the linked list
         */
        public ListNode deleteDuplicates(ListNode head) {
            if (head == null || head.next == null) {
                return head;
            }
            
            ListNode dummy = new ListNode(0);
            dummy.next = head;
            head = dummy;
    
            while (head.next != null && head.next.next != null) {
                if (head.next.val == head.next.next.val) {
                    int val = head.next.val;
                    // val 记录的是重复元素的值,下面的 while 循环会跳过所有的重复元素的值
                    while (head.next != null && head.next.val == val) {
                        head.next = head.next.next;
                    }            
                } else {
                    head = head.next;
                }
            }
            
            return dummy.next;
        }
    }
    

    相关文章

      网友评论

          本文标题:113. 删除排序链表中的重复数字 II

          本文链接:https://www.haomeiwen.com/subject/yurtqftx.html