Java 数据结构——单链表面试题(二)


Java 数据结构——单链表面试题(二)



本次内容介绍大纲

在这里插入图片描述


  接上篇 Java 数据结构——单链表面试题(一)



  在上一篇文章中,我们介绍了单链表的几道简单面试题,这次我们将继续通过简单的单链表面试题(以牛客网及 Leetcode 的链表题为主)来深入了解 单链表的知识结构。



一、链表中倒数第k个结点


1.题目要求

在这里插入图片描述

举一个例子:

  我先提供一个 已有的链表结构

在这里插入图片描述

  我们现在提供 给一个整形参数 k = 2 ,找到这个链表结构中的倒数第二个节点 。


2.思路实现


思路一

在这里插入图片描述

思路二

在这里插入图片描述

这种思路我们在实际链表中 走一遍…

设置 fast 、slow 指向head 头节点

在这里插入图片描述

fast 先走 k-1 步, slow 保持不动

在这里插入图片描述

slow、fast 同时向后走,直到 fast 为指为null

在这里插入图片描述

  此时 slow 指向的就是 我们题目所求的链表的 倒数第 2 个节点。

  返回 slow。

  好的 思路二能够找到倒数第 K 个节点,我们来就具体实现其每一个步骤的具体思路


1.首先我们传入参数 k 值,要考虑 k的合法性

2.slow、fast 的实际操作

在这里插入图片描述

  但是 ,上面的代码思路仍然有缺陷,在判断 k 的合法性时, 如果 k > sizeof() ,我们要调用 sizeof() 函数,此时也是一次 遍历链表的过程,所以 遍历次数两遍,也不符合要求。


  我们还要继续调整…

在这里插入图片描述
在这里插入图片描述

  这样的思路过程就没有问题了,整体代码遍历一遍。


3.代码实现


在这里插入图片描述


二、合并两个有序链表


1.题目要求

在这里插入图片描述


我们提供两个已知的有序链表


在这里插入图片描述

按照题目要求,最终按照升序 返回一个合并的链表

在这里插入图片描述


2.思路实现

在这里插入图片描述

3.代码实现


在这里插入图片描述


三、链表分割


1.题目要求

在这里插入图片描述

在这里插入图片描述

2.思路实现

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

3.代码实现


在这里插入图片描述


四、删除链表中重复的结点


1.题目要求

在这里插入图片描述

2.思路实现

在这里插入图片描述
在这里插入图片描述


3.代码实现


在这里插入图片描述



  好了今天的知识就分享到这里,希望大家多多练习,谢谢大家的欣赏与关注!!



   感谢支持!!!



   之后的单链表面试题博主会持续进行更新,欢迎各位读者大大的关注哦!!



未完待续…

  • 12
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 14
    评论
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

RAIN 7

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值