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