剑指 Offer 36. 二叉搜索树与双向链表|算法剑指 Offer|链表-DFS-二叉搜索树题目描述输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的循环双向链表。要求不能创建任何新的节点,只能调整树中节点指针的指向。
为了让您更好地理解问题,以下面的二叉搜索树为例:
我们希望将这个二叉搜索树转化为双向循环链表。链表中的每个节点都有一个前驱和后继指针。对于双向循环链表,第一个节点的前驱是 ...
Read more
剑指 Offer 35. 复杂链表的复制|算法剑指 Offer|模拟-链表题目描述请实现 $copyRandomList$ 函数,复制一个复杂链表。在复杂链表中,每个节点除了有一个 $next$ 指针指向下一个节点,还有一个 $random$ 指针指向链表中的任意节点或者 $null$。
示例 1:
12输入:head = [[7,null],[13,0],[11, ...
Read more
剑指 Offer 26. 树的子结构|算法剑指 Offer|二叉树-DFS题目描述输入两棵二叉树A和B,判断B是不是A的子结构。(约定空树不是任意一个树的子结构)
B是A的子结构, 即 A中有出现和B相同的结构和节点值。
例如:给定的树 A:
123453 / \ 4 5 / \ 1 2
给定的树 B:
123 4 / 1 ...
Read more
剑指 Offer 25. 合并两个排序的链表|算法剑指 Offer|链表-二路归并题目描述输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。
示例1:
12输入:1->2->4, 1->3->4输出:1->1->2->3->4->4
限制:
$0 <= 链表长度 < ...
Read more
剑指 Offer 24. 反转链表|算法剑指 Offer|链表-迭代题目描述定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。
示例:
12输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL
限制:
$0 <= 节点个 ...
Read more
剑指 Offer 22. 链表中倒数第k个节点|算法剑指 Offer|链表-快慢指针题目描述输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。
例如,一个链表有 $6$ 个节点,从头节点开始,它们的值依次是 $1、2、3、4、5、6$。这个链表的倒数第 $3$ 个节点是值为 $4$ 的节点。
示例:
123给定一 ...
Read more
剑指 Offer 18. 删除链表的节点|算法剑指 Offer|链表题目描述给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。
返回删除后的链表的头节点。
注意: 此题对比原题有改动
示例 1:
123输入: head = [4,5,1,9], val = 5输出: [4,1,9]解释: 给定你链表中值为 5 的第二个节点,那么在调用了你的函 ...
Read more
剑指 Offer 12. 矩阵中的路径|算法剑指 Offer|搜索-DFS-回溯题目描述给定一个 $m x n$ 二维字符网格 $board$ 和一个字符串单词 $word$ 。如果 $word$ 存在于网格中,返回 $true$ ;否则,返回 $false$ 。
单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元 ...
Read more
剑指 Offer 11. 旋转数组的最小数字|算法剑指 Offer|二分题目描述把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。
给你一个可能存在 重复 元素值的数组 $numbers$ ,它原来是一个升序排列的数组,并按上述情形进行了一次旋转。请返回旋转数组的 最小元素 。例如,数组 $[3,4,5,1,2]$ 为 $[1,2,3,4,5]$ 的 ...
Read more
剑指 Offer 10- II. 青蛙跳台阶问题|算法剑指 Offer|动态规划题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个 $n$ 级的台阶总共有多少种跳法。
答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。
示例 1:
12输入:n = 2输出:2
示例 2:
12输入:n = 7 ...
Read more