题目描述 输入两个链表,找出它们的第一个公共结点。 思路 先分别计算两个链表的长度,然后对齐链表(就是把比较长的那个链表的指针先往前走几步,以便赶上短的那个),然后同步遍历两个链表,这样肯定会同时到达公共结点。 Java…
标签:链表
九章算法面试题82 合并有序链表
原文网址: http://www.jiuzhang.com 问题详情 合并两个有序链表,要求合并之后依然有序。 在线评测本题: http://www.lintcode.com/problem/merge-tw…
环形单链表的约瑟夫问题
输入:一个环形单链表的头结点head和报数的值m。 返回:最后生存下来的节点,且这个节点自己组成环形单向链表,其他节点都删掉。 进阶:如果链表节点数为N,想在时间复杂度O(N)时完成原问题的要求,该如何实现? publi…
删除链表的中间节点和a/b处的节点
给定链表的头结点head,整数a、b,实现删除链表的中间节点的函数,并实现删除位于a/b处节点的函数。 public class RemoveNode { public class Node{ public int va…
使用循环链表实现约瑟夫环
约瑟夫算法:n个人围成一圈,每个人都有一个互不相同的密码,该密码是一个整数值,选择一个作为起点,然后顺时针从1到k(k为起点人手中的密码值)数数。数到K的人退出圈子,然后从下一个开始继续从1到j(刚退出圈子的人的密码)数…
《剑指offer》11.链表中倒数第k个节点
问题 输入一个链表,输出该链表中倒数第k个结点。 思绪 简朴思绪: 轮回到链表末端找到 length 在找到length-k节点 须要轮回两次。 优化:设定两个节点,间距相差k个节点,当前面的节点抵达尽头,取背面的节点。…
用 JavaScript 完成链表操纵 - 18 Recursive Reverse
TL;DR 用递归的体式格局反转链表,系列目次见 前言和目次 。 需求 完成函数 reverse() 用递归的体式格局反转链表。例子以下: var list = 2 -> 1 -> 3 -> 6 -&g…
用 JavaScript 完成链表操纵 - 17 Iterative Reverse
TL;DR 用轮回的体式格局反转链表,系列目次见 前言和目次 。 需求 完成要领 reverse() 用轮回的体式格局反转链表,链表应当只遍历一次。注重这个函数直接修正了链表自身,所以不需要返回值。 var list =…
用 JavaScript 完成链表操纵 - 16 Sorted Intersect
TL;DR 一次遍历取两个排序链表的交集,系列目次见 前言和目次 。 需求 完成函数 sortedIntersect() 取两个已排序的链表的交集,交集指两个链表都有的节点,节点不一定一连。每一个链表应当只遍历一次。效果…
用 JavaScript 完成链表操纵 - 15 Merge Sort
TL;DR 对链表举行兼并排序,系列目次见 前言和目次 。 需求 完成函数 mergeSort() 举行兼并排序。注重这类排序法须要运用递归。在 frontBackSplit() 和 sortedMerge() 两个函数…
用 JavaScript 完成链表操纵 - 14 Sorted Merge
TL;DR 把两个升序分列的链表兼并成一个,系列目次见 前言和目次 。 需求 完成函数 sortedMerge() 把两个升序分列的链表兼并成一个新链表,新链表也必需是升序分列的。这个函数应当对每一个输入的链表都只遍历一…
用 JavaScript 完成链表操纵 - 13 Shuffle Merge
TL;DR 把两个链表洗牌兼并成一个,系列目次见 前言和目次 。 需求 完成函数 shuffleMerge() 把两个链表兼并成一个。新链表的节点是交织从两个链表中取的。这叫洗牌兼并。举个例子,当传入的链表为 1 -&g…