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

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

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


/*
 * public class ListNode {
 *   int val;
 *   ListNode next = null;
 * }
 */

public class Solution {
    public ListNode deleteDuplicates(ListNode head) {
        if (head == null || head.next == null) {
            return head;
        }
        ListNode dummy = new ListNode(-1);  // 新定义一个链表
        dummy.next = head;   // 将新定义的链表接上原链表
        ListNode prev = dummy;   // 定义靠前的节点为新链表的第一个节点
        ListNode curr = head;   // 定义靠后的节点为原链表的第一个节点
        while (curr != null && curr.next != null) {   // 如果靠后的节点不为空,且其再往后的节点也不为空
            if (curr.val == curr.next.val) {   // 靠后的节点的值等于其再往后的节点的值
                ListNode temp = curr.next;
                while (temp != null && temp.val == curr.val) {   // 如果其再往后的节点不为空,且其再往后的节点的值等于其的值
                    temp = temp.next;  // 则靠后的节点变为其再往后的节点,逐渐往后
                }
                prev.next = temp;
                curr = temp;
            } else {
                prev = prev.next;
                curr = curr.next;
            }
        }
        return dummy.next;
    }
}
全部评论

相关推荐

点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
11-26 15:46
已编辑
字节国际 电商后端 24k-35k
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务