题解 | #删除有序链表中重复的元素-II#

删除有序链表中重复的元素-II

http://www.nowcoder.com/practice/71cef9f8b5564579bf7ed93fbe0b2024

/**
     * 设置一个首节点,遍历扫描,并设置
     * pre,cur,next三个指针
     *
     * @param head
     * @return
     */
    public static ListNode deleteDuplicates(ListNode head) {
        // write code here
        ListNode node = new ListNode(0);
        node.next = head;
        ListNode next;
        ListNode cur = head;
        ListNode pre = node;
        while (cur != null) {
            next = cur.next;
            boolean tmp = false;
            while (next != null && cur.val == next.val) {
                next = next.next;
                pre.next = next; // 前一个不同节点指向下一个不同节点
                tmp = true;
            }
            if (!tmp) { // 如果以前没有相同的节点,则pre指向当前节点,保证下次遇到相同的节点设置next
                pre = cur;
            }
            cur = next;
        }
        return node.next;
    }
算法 文章被收录于专栏

数据结构和算法

全部评论

相关推荐

求offer的大角牛:不吃香菜
点赞 评论 收藏
分享
评论
5
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务