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

删除链表中重复的结点

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

用一个set查重,循环链表进行节点删除,在set里就是重的。

/*
 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) {
        ListNode p1,p2,head = pHead;
        p2 = pHead;
        Set<Integer> we = new HashSet<>();
        if(pHead == null){
            return null;
        }
        if(pHead.next == null){
            return pHead;
        }
        while(p2 !=null){
            if(p2.next != null){
                if(p2.next.val == p2.val){
                    we.add(p2.val);
                }
            }
            p2 = p2.next;
        }
        p2 = null;
        
        p1 = head.next;
        
        if(head.next.next != null){
            p2 = head.next.next;
        }
        
        while(p2 != null && p1 != null){
            if(we.contains(p1.val)){
                head.next = p2;
                p1 = p2;
                p2 = p2.next;
            }else{
                head = p1;
                p1 = p2;
                p2 = p2.next;
            }
        }
        if(we.contains(p1.val)){
            head.next = null;
        }
        if(we.contains(pHead.val)){
            pHead = pHead.next;
        }
        
        return pHead;
    }
}
全部评论

相关推荐

码农索隆:单休一个月少休息4天,一年就是48天,平时节假日,别人3天假期,单休的两天
点赞 评论 收藏
分享
合不合适,我自己说了才算
码农索隆:hr:“真执着啊,来我公司当法人吧”
点赞 评论 收藏
分享
Yki_:你要算时间成本呀,研究生两三年,博士三四年,加起来就五六年了,如果你本科去腾讯干五年,多领五年的年薪,加上公司内涨薪,可能到时候十五年总薪资也跟博士差不多
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-09 16:15
我应届生,去年10月份开始在这家公司实习,到今年10月份正好一年想(实习+试用期),在想要不要提前9月份就离职,这样好找工作些,但又差一个月满一年,又怕10月份国庆回来离职,容易错过了下半年的金九银十,到年底容易gap到年后
小破站_程序员YT:说这家公司不好吧,你干了快一年 说这家公司好吧,你刚毕业就想跑路说你不懂行情吧,你怕错过金九银十说 你懂行情吧,校招阶段在实习,毕业社招想换工作 哥们,我该怎么劝你留下来呢
应届生,你找到工作了吗
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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