Java链表面试题有哪些


这篇文章主要为大家展示了“Java链表面试题有哪些”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Java链表面试题有哪些”这篇文章吧。题目:反转一个单链表每个节点是不变的,只是修改当前每个节点的指向看图分析:问题分析:每个节点是不变的,只需要修改当前每个节点的指向,第一个节点指向变成null,第二个节点的指向是第一个节点。问题讲解:我们需要定义四个节点变量head变量等于头节点cur = headprev = nullcurNext = cur.next第一步:curNext = cur.next第二步:cur.next = prev第三步:prev = cur第四步:cur =curNext我们看一下图解是如何走的第一步:curNext = cur.next第二步:cur.next = prev第三步:prev = cur第四步:cur =curNext这四步让它是一个循环,我们再走一个循环给大家看第五步:curNext = cur.next第六步:cur.next = prev第七步:prev = cur第八步:cur =curNext这样两个循环下来我想大家看的就很明白了,那既然是循环肯定会有终止条件,所以我们可以看一下,当cur走到最后一个字节的时候,我们仍然需要 cur.next =prev,再往后走的话cur就为null了,为null的时候就反转结束了。所以我们循环的终止条件就是cur != null。另外我们还需要判断一直指向头节点的head为不为null,如果为null的话就是没有这个链表,直接返回null就可以了。反转完成后最后一个节点就变成了头节点,所以我们返回prev就可以了、那我们就可以来写代码了。代码实现:力扣https://leetcode-cn.com/problems/reverse-linked-list/description/题目链接在上面,大家一定打开链接自己做一下。题目:给定一个带有头结点 head 的非空单链表,返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。画图分析:问题分析:奇数的话返回中间的节点,偶数的话返回第二个中间节点,也就是说偶数返回第三个。问题讲解:同样的,我们来定义两个引用变量fast,slow两个引用变量都等于head头节点如图:我们让fast一次走两步,slow一次走两步,奇数情况:fast.next为null,slow所在的就是中间节点位置。偶数情况:fast为null,low所在的就是中间节点位置 。原因是为什么呢?两个同时走,fast的速度是slow的两倍,那么路程也是两倍,一个走到终点了,那么另一个就是走了路程的一半。有这样的思路我们就可以来写代码了 ,同样的先要判断一下链表是不是为null,为null直接返回null就好了代码实现:力扣https://leetcode-cn.com/problems/middle-of-the-linked-list/description/题目:输入一个链表,输出该链表中倒数第k个结点画图分析:问题讲解:同样的,我们来定义两个引用变量fast,slow两个引用变量都指向头节点如图:如果我们要找倒数第K个,从第K个到倒数第1个需要走K-1步,所以我们先让fast走K-1步,当走完K-1步,fast指向的是倒数第一个时候,那么slow就是我们要找的倒数第K给,如果fast走完K-1步,fast指向的不是倒数第一个,那么这个时候我们让fast和slow一起往后走,他们始终差了K-1步,当fast走到倒数第一个的时候,这个时候slow所指向的节点就是我们要找的倒数第K个。这里K我们也要判断一下,如果K链表的长度,我们直接返回null就可以了。代码实现:链表中倒数第k个结点_牛客题霸_牛客网【牛客题霸】收集各企业高频校招笔面试题目,配有官方题解,在线进行百度阿里腾讯网易互联网名企笔试面试模拟考试练习,和牛人一起讨论经典试题,全面提升你的技术能力https://www.nowcoder.com/practice/529d3ae5a407492994ad2a246518148a?tpId=13&&tqId=11167&rp=2&ru=/activity/oj&qru=/ta/coding-interviews/question-ranking题目:将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。画图分析:这是我们的两个链表问题讲解:同样的,先定义两个引用变量headA和headB分别指向两个链表的头节点。定义一个虚拟节点,假设叫newHead,在定义一个引用变量tmp等于newHead首先我们先来比较headA和headB的大小,如果headA.val

因为12小,那么就让headA = headA.next,如果后面再找到比12大数字就要放在12的后头,所以我们让tmp = tmp.next,

这个时候再比较headA和headB,如果headA.val>headB.val,那么就是让tmp.next = headB,再让headB = headB.next,tmp = tmp.next

这样就构成了我们的一个循环,当headA和headB都不为null的时候我们才能继续循环,当循环结束,要么headA为null,要么headB为null,当headA为null,我们让tmp.next =headB,当headB为null,我们让tmp.next =headA,

代码实现:

lassSolution{
publicListNodemergeTwoLists(ListNodeheadA,ListNodeheadB){
ListNodenewhead=newListNode(-1);
ListNodetmp=newhead;
while(headA!=null&&headB!=null){
if(headA.val

以上是“Java链表面试题有哪些”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注百云主机行业资讯频道!

因为12小,那么就让headA = headA.next,如果后面再找到比12大数字就要放在12的后头,所以我们让tmp = tmp.next,这个时候再比较headA和headB,如果headA.val>headB.val,那么就是让tmp.next = headB,再让headB = headB.next,tmp = tmp.next这样就构成了我们的一个循环,当headA和headB都不为null的时候我们才能继续循环,当循环结束,要么headA为null,要么headB为null,当headA为null,我们让tmp.next =headB,当headB为null,我们让tmp.next =headA,代码实现:以上是“Java链表面试题有哪些”这篇文免费云主机域名章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注百云主机行业资讯频道!

相关推荐: PHP中怎么对数组进行模糊查询

这篇文章主要介绍“PHP中怎么对数组进行模糊查询”,在日常操作中,相信很多人在PHP中怎么对数组进行模糊查询问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”PHP中怎么对数组进行模糊查询”的疑惑有所帮助!接下来,请跟着小编一起来学…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 07/18 21:15
下一篇 07/18 21:15

相关推荐