美文网首页数据结构与算法程序员Android知识
LintCode 删除排序链表中的重复数字 II

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

作者: 六尺帐篷 | 来源:发表于2017-03-07 19:21 被阅读64次

    题目

    给定一个排序链表,删除所有重复的元素只留下原链表中没有重复的元素。
    样例
    给出 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 ListNode head is the head of the linked list
         * @return: ListNode head of the linked list
         */
        public static 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;
                    while (head.next != null && head.next.val == val) {
                        head.next = head.next.next;
                    }            
                } else {
                    head = head.next;
                }
            }
            
            return dummy.next;
        }
    }
    
    

    相关文章

      网友评论

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

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