链表

1、找出链表中环的入口结点
思路1:用map记录走过的节点,当 当前节点是走过的,则为入口
思路2:快慢指针

设置快慢指针,都从链表头出发,快指针每次走两步,慢指针一次走一步,假如有环,一定相遇于环中某点(结论1)。---找相遇点
接着让两个指针分别从相遇点和链表头出发,两者都改为每次走一步,最终相遇于环入口(结论2)。---分别从相遇点和链表头出发

import java.util.*;
public class Solution {
    public ListNode EntryNodeOfLoop(ListNode pHead)
    {
        ListNode q=pHead;
        ListNode s=pHead;
        while(q!=null&&q.next!=null){
            //放前面,因为q、s初始是一样的,而环不可能只有一个节点,放弃对第一个节点的环判断
            q=q.next.next;
            s=s.next;
            if(q==s){//有相遇点q,即有环
               q=pHead;
               while(q!=s){
                   q=q.next;
                   s=s.next;
               }//此时q==s,再次相遇于入环点
               return q;
            }
        }
        return null;
    }
}

2、删除链表中重复的结点
删除链表节点时,一定要保留 前一个节点最未被删除的节点/其下一个
所以要有两个指针,一个指向被判断节点的前一个(l),一个指向被判断节点的下一个(r)。
由于第一个节点也可能被删除,所以要在最前面建立一个空白节点,作为l。

public class Solution {
    public ListNode deleteDuplication(ListNode pHead)
    {
        //头尾指针
        if(pHead==null) return null;
        ListNode h=new ListNode(0);
        h.next=pHead;
        ListNode l=h;//l是目标节点的前一个
        ListNode r=null;
        while(l.next!=null&&l.next.next!=null){
            r=l.next.next;
            if(r.val==l.next.val){
                while(r!=null&&r.val==l.next.val){
                    r=r.next;
                }//r到了连续相同中的最后一个节点
                l.next=r;//现在被比较的是 连续相同中的后一个
            }
            else
                l=l.next;
        }
        return h.next;
    }
}
全部评论

相关推荐

来,说点可能被同行“骂”的大实话。🙊当初接数字马力Offer时,朋友都说:“蚂蚁的“内包”公司?你想清楚啊!”但入职快一年后的今天,我反而对他有了不一样的看法!🔹 是偏见?还是信息差!之前没入职之前外面都在说什么岗位低人一等这类。实际上:这种情况不可至否,不能保证每个团队都是其乐融融。但我在的部门以及我了解的周边同事都还是十分好相处的~和蚂蚁师兄师姐之间也经常开一些小玩笑。总之:身份是蚂蚁公司给的,地位是自己挣的(一个傲娇女孩的自述)。🔹 待遇?玩的就是真实!试用期工资全额发!六点下班跑得快(早9晚6或者早10晚7,动态打卡),公积金顶格交。别听那些画饼的,到手的钱和下班的时间才是真的(都是牛马何必难为牛马)。🔹 能不能学到技术?来了就“后悔”!我们拥有权限直通蚂蚁知识库,技术栈多到学不完。说“学不到东西”的人,来了可能后悔——后悔来晚了(哈哈哈哈,可以不学但是不能没有)!💥 内推地址:https://app.mokahr.com/su/ueoyhg❗我的内推码:NTA6Nvs走我的内推,可以直达业务部门,面试流程更快速,进度可查!今天新放HC,之前挂过也能再战!秋招已经正式开始啦~机会就摆在这,敢不敢来试一试呢?(和我一样,做个勇敢的女孩)
下午吃泡馍:数字马力的薪资一般哇,5年经验的java/测试就给人一万出头,而且刚入职第三天就让人出差,而且是出半年
帮你内推|数字马力 校招
点赞 评论 收藏
分享
迷茫的大四🐶:💐孝子启动失败,改为启动咏鹅
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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