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

文章目录

  • Java 数据结构——单链表面试题(二)
  • 一、链表中倒数第k个结点
    • 1.题目要求
    • 2.思路实现
    • 3.代码实现
  • 二、合并两个有序链表
    • 1.题目要求
    • 2.思路实现
    • 3.代码实现
  • 三、链表分割
    • 1.题目要求
    • 2.思路实现
    • 3.代码实现
  • 四、删除链表中重复的结点
    • 1.题目要求
    • 2.思路实现
    • 3.代码实现
  • 未完待续…


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



本次内容介绍大纲

Java 数据结构——单链表面试题(二)_第1张图片


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



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



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


1.题目要求

Java 数据结构——单链表面试题(二)_第2张图片

举一个例子:

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

Java 数据结构——单链表面试题(二)_第3张图片

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


2.思路实现


思路一

Java 数据结构——单链表面试题(二)_第4张图片

思路二

Java 数据结构——单链表面试题(二)_第5张图片

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

设置 fast 、slow 指向head 头节点

Java 数据结构——单链表面试题(二)_第6张图片

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

Java 数据结构——单链表面试题(二)_第7张图片

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

Java 数据结构——单链表面试题(二)_第8张图片

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

  返回 slow。

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


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

2.slow、fast 的实际操作

Java 数据结构——单链表面试题(二)_第9张图片

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


  我们还要继续调整…

Java 数据结构——单链表面试题(二)_第10张图片
Java 数据结构——单链表面试题(二)_第11张图片

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


3.代码实现


Java 数据结构——单链表面试题(二)_第12张图片


二、合并两个有序链表


1.题目要求

Java 数据结构——单链表面试题(二)_第13张图片


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


Java 数据结构——单链表面试题(二)_第14张图片

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

Java 数据结构——单链表面试题(二)_第15张图片


2.思路实现

Java 数据结构——单链表面试题(二)_第16张图片

3.代码实现


Java 数据结构——单链表面试题(二)_第17张图片


三、链表分割


1.题目要求

Java 数据结构——单链表面试题(二)_第18张图片

Java 数据结构——单链表面试题(二)_第19张图片

2.思路实现

Java 数据结构——单链表面试题(二)_第20张图片

Java 数据结构——单链表面试题(二)_第21张图片

Java 数据结构——单链表面试题(二)_第22张图片

3.代码实现


Java 数据结构——单链表面试题(二)_第23张图片


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


1.题目要求

Java 数据结构——单链表面试题(二)_第24张图片

2.思路实现

Java 数据结构——单链表面试题(二)_第25张图片
Java 数据结构——单链表面试题(二)_第26张图片


3.代码实现


Java 数据结构——单链表面试题(二)_第27张图片



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



   感谢支持!!!



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



未完待续…

你可能感兴趣的:(链表,面试,java,数据结构,单链表)