文章 2021-11-13 来自:开发者社区

剑指Offer——合并两个排序的链表(JS实现)

题目描述解题思路创建一个新的链表节点newNode指定一个临时指针h指向这个新的节点newNode使用while循环,在条件为L1和L2都不为空的条件下遍历,如果L1当前数据域的值小,就让newNode指向L1,反之指向L2while循环遍历完之后,如果L1和L2谁还有剩余,谁就加到newNode的尾部。最后返回的是h临时指针的next域,因为h临时指针刚开始指向的是我们新创建的节点。实现代码v....

剑指Offer——合并两个排序的链表(JS实现)
文章 2021-11-13 来自:开发者社区

剑指Offer——复杂链表的复制(JS实现)

题目描述解题思路使用Map数据结构来进行赋值键存放指向节点的指针值存放new Node第一次循环构建Map数据结构第二次循环给值的next域和random域进行赋值记住一点:这里的值的next域和random域不能指向node的节点,只能指向map数据结构中的值的节点实现代码var copyRandomList = function(head) { // 首先创建一个Map,键用来存储h...

剑指Offer——复杂链表的复制(JS实现)
文章 2021-11-13 来自:开发者社区

剑指Offer——二叉搜索树与双向链表(JS实现)

题目描述解题思路使用二叉树的中序遍历,将每一个节点存到一个数组中使用for循环改变每个节点的left,right指针域实现代码var treeToDoublyList = function (root) { const temp = []; function dfs(root) { if (!root) return null; dfs(root....

剑指Offer——二叉搜索树与双向链表(JS实现)
文章 2018-08-09 来自:开发者社区

[剑指offer] 从尾到头打印链表

本文首发于我的个人博客:尾尾部落 题目描述 输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。 解题思路 一种方法是利用栈来实现; 另外一种方法是利用三个指针把链表反转,关键是 r 指针保存断开的节点。 image 参考代码 /** * public class ListNode { * int val; * ListNode nex...

文章 2018-07-28 来自:开发者社区

[剑指offer] 删除链表中重复的结点

本文首发于我的个人博客:尾尾部落 题目描述 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5 解题思路 首先添加一个头节点,以方便碰到第一个,第二个节点就相同的情况 设置 first ,second 指针, first ...

文章 2018-07-24 来自:开发者社区

[剑指offer] 链表中环的入口结点

本文首发于我的个人博客:尾尾部落 题目描述 给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。 解题思路 第一步,用两个快慢指针找环中相汇点。分别用slow, fast指向链表头部,slow每次走一步,fast每次走二步,直到fast == slow找到在环中的相汇点。 第二步,找环的入口。当fast == slow时,假设slow走过x个节点,则fast走过2x个节点.....

文章 2018-07-16 来自:开发者社区

[剑指offer] 两个链表的第一个公共结点

本文首发于我的个人博客:尾尾部落 题目描述 输入两个链表,找出它们的第一个公共结点。 解题思路 如果两个链表存在公共结点,那么它们从公共结点开始一直到链表的结尾都是一样的,因此我们只需要从链表的结尾开始,往前搜索,找到最后一个相同的结点即可。但是题目给出的单向链表,我们只能从前向后搜索,这时,我们就可以借助栈来完成。先把两个链表依次装到两个栈中,然后比较两个栈的栈顶结点是否相同,如果相同则出栈.....

文章 2018-07-04 来自:开发者社区

[剑指offer] 二叉搜索树与双向链表

题目描述 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。 解题思路 题目可能比较难理解,可以看如下的图,我们有一棵二叉搜索树,要求得右边的双向链表。 image 在二叉搜索树中,左子结点的值总是小于父结点的值,右子节点的值总是大于父结点的值。因此我们在转换成排序双向链表时,原先指向左子结点的指针调整为链表中指向前一个...

文章 2018-07-03 来自:开发者社区

[剑指offer] 复杂链表的复制

题目描述 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空) 解题思路 image 参考代码 /* public class RandomListNode { int label; RandomListNo...

文章 2018-06-29 来自:开发者社区

[剑指offer] 合并两个排序的链表

题目描述 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。 解题思路 两种解法:递归和非递归 参考代码 /* public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; } }*/ ...

本页面内关键词为智能算法引擎基于机器学习所生成,如有任何问题,可在页面下方点击"联系我们"与我们沟通。

数据库

分享数据库前沿,解构实战干货,推动数据库技术变革

+关注