面试大总结之链表
CS3K.com
一、OverView:
链表是面试中常考的,本文参考了其它一些文章,加上小编的自己总结,基本每个算法都测试并优化过。
算法大全(1)单链表 中还有一些链表题目,将来也会整理进来。这些题目虽然简单,但如果能毫无BUG地写出,定能让面试官司对您印象分大增。

小亮点是:主页君用Recursion 和 Iterator 各写了一次所有题目,这样就算遇到不熟悉的写法,我们也都可以运用自如。

二、代码
以下是GitHub的代码链接,欢迎大家指正:

ListNodeDemo.java
CS3K.com

三、代码目录:

求单链表中结点的个数:
getListLength
将单链表反转:
reverseList(遍历),reverseListRec(递归)
查找单链表中的倒数第K个节点(k > 0):
reGetKthNode
查找单链表的中间结点:
getMiddleNode
从尾到头打印单链表:
reversePrintListStack,reversePrintListRec(递归)
已知两个单链表pHead1 和pHead2 各自有序,把它们合并成一个链表依然有序:
mergeSortedList, mergeSortedListRec
判断一个单链表中是否有环:
hasCycle
判断两个单链表是否相交:
isIntersect
求两个单链表相交的第一个节点:
getFirstCommonNode
已知一个单链表中存在环,求进入环中的第一个节点:
detectCycle, getFirstNodeInCycleHashMap
给出一单链表头指针pHead和一节点指针pToBeDeleted,O(1)时间复杂度删除节点
pToBeDeleted: delete
CS3K.com
四、总结规律:CS3K.com

DummyNode的使用。
做链表题目时,如果我们需要返回头部,一般情况我们可以创建一个虚拟节点,叫DummyNode,把头部挂在它的后面。这样就算头部变化了之后,只要返回DummyNode.next就能轻松得到新头部,而不用纠结新的头部到底 在哪里。
Merge LinkedList是相当基础的题目,这么多题目是基于它的,必须写熟。
Reverse linkedList最简单的写法就是创建DummyNode,然后把旧的链表不断插入到DummyNode的后面,就能轻松地返回链表了。
操作链表的时候,我们经常会改变某些Node的下一个节点。如果你希望待一下会再用到被改变掉的下一个节点,请一定记得用tmp先把它保存起来。
查找链表的中间节点:使用2个快慢指针 ,一个进2步,一个进1步,快指针到达终点时,慢指针就会停留在链表的中间位置了。
CS3K.com
---------------------
作者: 九章算法  
来源:CSDN
原文:https://blog.csdn.net/jiuzhangsuanfa/article/details/83689118
版权声明:本文为博主原创文章,转载请附上博文链接!

转载于:https://www.cnblogs.com/jzsf/p/9940795.html

九章算法【总结】Java 搞定链表-面试常考题目精选相关推荐

  1. 分治习题--九章算法培训课第三章笔记

    1.Maximum Depth of Binary Tree 这是道简单的分治习题了 分: 左子树最大深度 右子树最大深度 治: 最大深度等于max(左子树,右子树)+1 public class S ...

  2. 九章算法笔记 - 思路总结

    上九章算法课的笔记,之前记在笔记本上,现在扫描出来便于保存,每次面试之前看着这个笔记过一遍,心里有谱一些. 目录: 1.二分搜索 Binary search 2.二叉树与分治法 3.宽度优先搜索 BF ...

  3. 九章算法高频算法题 题解

    专栏 | 九章算法 网址 | http://www.jiuzhang.com Google 面试题: Google 面试题 | 目标和 Google 面试题 | 建邮局 Google 面试题 | 0与 ...

  4. 【九章算法】北美求职之面试题目

    九章算法面试题55 旋转字符串 给一个字符串和一个旋转的偏移量offset,将字符串循环右移offset位.如:"abcdefg" ... Tags: 字符串 九章算法面试题54 ...

  5. 动态规划法求最大字段和时间复杂度_九章算法 | 动态规划:最长上升子序列

    给定一个整数序列,找到最长上升子序列(LIS),返回LIS的长度. 在线评测地址:LintCode 领扣 说明 最长上升子序列的定义: 最长上升子序列问题是在一个无序的给定序列中找到一个尽可能长的由低 ...

  6. 最长回文子串动态规划_九章算法 | 微软面试题:最长回文子串

    给出一个字符串(假设长度最长为1000),求出它的最长回文子串,你可以假定只有一个满足条件的最长回文串. 在线评测地址:LintCode 领扣 样例 1: 输入:"abcdzdcab&quo ...

  7. 编号是i的结点所在的层次号是_九章算法 | 微软面试题:二叉树的锯齿形层次遍历...

    给出一棵二叉树,返回其节点值的锯齿形层次遍历(先从左往右,下一层再从右往左,层与层之间交替进行) 在线评测地址:LintCode 领扣 样例 1: 输入:{1,2,3} 输出:[[1],[3,2]] ...

  8. java环形链表_数据结构和算法(四)Java实现环形链表

    1. 数据结构和算法(四)Java实现环形链表 1.1 约瑟夫问题 约瑟夫问题:公元66年,约瑟夫不情愿地参与领导了犹太同胞反抗罗马统治的起义,后来起义失败,他和一些宁死不降的起义者被困于一个山洞之中 ...

  9. 多个数字数组_九章算法 | 谷歌面试题:多个数组的交集

    给出多个数组,求它们的交集.输出他们交集的大小. 在线评测地址:LintCode 领扣 样例 1: 输入: [[1,2,3],[3,4,5],[3,9,10]]输出: 1解释:只有3出现在三个数组中. ...

最新文章

  1. 死磕Java并发:Java内存模型之总结
  2. 浅谈视觉设计的准确性
  3. PHP (20140505)
  4. CMake 使用方法
  5. [jQuery] jQuery.fn的init方法返回的this指的是什么对象?为什么要返回this
  6. nodeJs的学习之路(1)
  7. oracle 修改2个表,oracle学习笔记2:创建修改表
  8. htt【RiPro网盘链接检测插件】目前支持四种常用网盘
  9. 语音转文字的软件APP
  10. Android如何解析Intent
  11. 随笔记--深浅拷贝问题
  12. 房产中介管理系统的开发(附源码)
  13. 【时序】DCRNN:结合扩散卷积和GNN的用于交通流量预测的时空预测网络
  14. java md5加密64位_MD5加密的Java实现
  15. Vue3 - Suspense 组件介绍及使用方法
  16. Java小游戏,防止物体跑出四周边界的算法
  17. 京东商品长图功能来啦 不用改图一键生成长图
  18. C#实现监控网络流量
  19. 连接池原理介绍+常用连接池介绍
  20. child计算机英语作文,Childhood的英语作文(精选8篇)

热门文章

  1. 系统吞吐量、TPS(QPS)、用户并发量、性能测试概念和公式
  2. Java的Json解析包FastJson使用
  3. Java --循环截取字符串
  4. EffectiveC++ Item11
  5. 房地产CRM系列之三:客户营销
  6. Markdown基本语法使用
  7. 内网***测试定位技术总结
  8. Vue 学习笔记 (一) -- 初识 VueCli 3
  9. .net项目技术选型总结
  10. MATLAB常用函数, 常见问题