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

删除链表中重复的结点

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

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

ListNode(int val) {
    this.val = val;
}

} */

import java.util.*;

public class Solution {

public ListNode deleteDuplication(ListNode pHead) {
//先使用散列表HashMap记录无重复数字的节点
//以{1,2,2,3,3,4}为例,得到{1:true, 2:false, 3:false, 4:true}
    HashMap<Integer, Boolean> map = new HashMap<>();
    ListNode cur = pHead;
    while(cur != null){
        if(map.containsKey(cur.val)){
            map.put(cur.val, false);
        }else{
            map.put(cur.val, true);
        }
        cur = cur.next;
    }
    //设置遍历指针cur初始位于pHead, 以及记录指针tmp
    //设置头节点head,记录初始tmp指针的位置,(同时是为了防止初始pHead.val为重复数值出错)
    //head.next = pHead;
    cur = pHead;
    ListNode tmp = new ListNode(-1);
    tmp.next = pHead;
    ListNode head = tmp;
    while(cur != null){
        
        if(map.get(cur.val).equals(true)){
            tmp.next = cur;
            tmp = cur;
            cur = cur.next;
            
        }else{
            cur = cur.next;
        }
    }
    //一下是针对{1,1}出错所做的修改
    tmp.next = cur;
    tmp = cur;

    return head.next;
}

}

全部评论

相关推荐

不愿透露姓名的神秘牛友
07-07 11:30
仁者伍敌:kpi都懒得刷了属于是
点赞 评论 收藏
分享
07-09 19:25
门头沟学院 Java
这是要把每一个投校招的都开盒吗?
26届之耻将大局逆转:裁人的时候一次性追回餐费
点赞 评论 收藏
分享
白火同学:大二有这水平很牛了,可以适当对关键信息加粗一点,比如关键技术、性能指标之类的。
点赞 评论 收藏
分享
05-20 21:57
已编辑
门头沟学院 Java
喜欢吃卤蛋的悲伤蛙在...:建信融通没消息吧,我2说有实习挂简历不理了
点赞 评论 收藏
分享
来个大佬救一下,为上投了都是石沉大海了,没实习经历的话怕秋招直接进不了面。什么实习这么难找,基本
心态爆炸了:现在正式的岗位都少,实习基本不咋招的,除了大厂,中小企业其实没那么多岗位需求,就算是有,大多都是招一两个廉价劳动力,同时,他们也会希望你一来就能干活的,没时间培训你,就让你了解公司的项目,你了解完就可以开始干活。再者是,很多低质量的实习其实用处没有那么大的。我去年也是找实习找到破防,最后去了一家深圳的小公司实习,工作对我来说很简单,甚至不如我在学校做的项目,秋招的时候,这段实习经历也并没有帮上什么忙,投递简历,依旧非常低的回复率。低回复率是常态,尤其是找实习,找不到,那就把重心放在优化自己的简历和项目,多看八股文,锻炼自己的面试能力,多看别人的面经,自己模拟面试,等秋招的时候,只要有那么寥寥几次,好好抓住那几次机会。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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