题解 | #删除链表中重复的结点#

删除链表中重复的结点

https://www.nowcoder.com/practice/fc533c45b73a41b0b44ccba763f866ef

/*class ListNode {
 *     val: number
 *     next: ListNode | null
 *     constructor(val?: number, next?: ListNode | null) {
 *         this.val = (val===undefined ? 0 : val)
 *         this.next = (next===undefined ? null : next)
 *     }
 * }
 */
/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 * 
 * @param pHead ListNode类 
 * @return ListNode类
 */
export function deleteDuplication(pHead: ListNode): ListNode {
    // 加一个表头比较好操作一些
    //1.当遇到一个节点等于下一个节点进行跳过去,连接不相等的节点
    //2.否则就连上
    if(pHead === null)return null
    let res = new ListNode(0)
    res.next = pHead
    //记录一下当前的表头
    let current = res
    //判断下面的两个节点
    while(current.next !== null && current.next.next !== null){
        if(current.next.val === current.next.next.val){
            const temp = current.next.val
            //将所有相同的节点都跳过
            while(current.next !==  null && current.next.val === temp){
                current.next = current.next.next
            }
        }else{
            current = current.next
        }
    }
    return res.next
}

全部评论

相关推荐

10-13 13:49
南京大学 财务
饿魔:笑死我了,你简直是个天才
点赞 评论 收藏
分享
冷花幽露:大概率是了,京东面试就是这样。我上周一面也是20多分钟,面试官问的很刁钻的问题也答上来了,面完过了几天还是没推进,泡池子,昨天一看挂了。如果一面完第2天没有收到2面邀请,基本上不用抱希望了。如果你的bg是985,面试流程也是和我们一样,20多分钟,唯一区别就是面完他们会很快收到二面邮件,而不像我们泡池子然后挂掉
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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