剑指offer_除链表中重复的节点

在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留。

输入:1->2->3->3->4->4->5

输出:1->2->5
复制代码

虚拟头节点的使用
相同的话 q = q.next
判断长度是否为1

/**
 * Definition for singly-linked list.
 * function ListNode(val) {
 *     this.val = val;
 *     this.next = null;
 * }
 */
/**
 * @param {ListNode} head
 * @return {ListNode}
 */
var deleteDuplication = function(head) {
    let dummy = new ListNode(-1);
    dummy.next = head;
    
    let p = dummy;
    while(p.next){
        let q = p.next;
        while(q && p.next.val === q.val) q = q.next;
        
        //判断长度是否为1
        if(p.next.next === q) p = p.next;
        else p.next = q;
    }
    
    return dummy.next;
    
};
复制代码
© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享