剑指offer
文章平均质量分 52
「已注销」
这个作者很懒,什么都没留下…
展开
-
【剑指offer】【C++】13. 机器人的运动范围
地上有一个m行n列的方格,从坐标 [0,0] 到坐标 [m-1,n-1] 。一个机器人从坐标 [0, 0] 的格子开始移动,它每次可以向左、右、上、下移动一格(不能移动到方格外),也不能进入行坐标和列坐标的数位之和大于k的格子。例如,当k为18时,机器人能够进入方格 [35, 37] ,因为3+5+3+7=18。但它不能进入方格 [35, 38],因为3+5+3+8=19。请问该机器人能够到达多少个格子?示例 1:输入:m = 2, n = 3, k = 1输出:3示例 2:输入:m = 3原创 2021-06-24 22:49:14 · 276 阅读 · 0 评论 -
【剑指offer】【C++】12. 矩阵中的路径
给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中,返回 true ;否则,返回 false 。单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。例如,在上面的 3×4 的矩阵中包含单词 "ABCCED"(单词中的字母已标出)。示例 1:输入:board = [["A","B","C","E"],["S","F","C","S"],["A","原创 2021-06-24 15:26:05 · 321 阅读 · 0 评论 -
【剑指offer】【C++】09. 用两个栈实现队列
用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 )示例 1:输入:["CQueue","appendTail","deleteHead","deleteHead"][[],[3],[],[]]输出:[null,null,3,-1]示例 2:输入:["CQueue","deleteHead","appendTail",原创 2021-06-23 16:06:07 · 115 阅读 · 0 评论 -
【剑指offer】【C++】07. 重建二叉树
输入某二叉树的前序遍历和中序遍历的结果,请重建该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如,给出前序遍历 preorder = [3,9,20,15,7]中序遍历 inorder = [9,3,15,20,7]返回如下的二叉树: 3 / \ 9 20 / \ 15 7 限制:0 <= 节点个数 <= 5000来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/z原创 2021-06-23 15:45:32 · 162 阅读 · 1 评论 -
【剑指offer】【C++】06. 从尾到头打印链表
1 题目描述输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。示例 1:输入:head = [1,3,2]输出:[2,3,1] 限制:0 <= 链表长度 <= 10000来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/cong-wei-dao-tou-da-yin-lian-biao-lcof著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。2 考点:反向获取链表内容3原创 2021-06-23 14:22:02 · 108 阅读 · 0 评论 -
【剑指offer】【C++】05. 替换空格
1 题目描述请实现一个函数,把字符串 s 中的每个空格替换成"%20"。示例 1:输入:s = "We are happy."输出:"We%20are%20happy." 限制:0 <= s 的长度 <= 10000来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/ti-huan-kong-ge-lcof著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。2 考点:string的额外操作3原创 2021-06-23 12:35:47 · 205 阅读 · 0 评论 -
【剑指offer】【C++】04. 二维数组中的查找
在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个高效的函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 示例:现有矩阵 matrix 如下:[ [1, 4, 7, 11, 15], [2, 5, 8, 12, 19], [3, 6, 9, 16, 22], [10, 13, 14, 17, 24], [18, 21, 23, 26, 30]]给定 target =原创 2021-06-23 11:06:03 · 148 阅读 · 0 评论 -
【剑指offer】【数组】03. 数组中重复的数字
题目:找出数组中重复的数字。在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。示例 1:输入:[2, 3, 1, 0, 2, 5, 3]输出:2 或 3 来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/shu-zu-zhong-zhong-fu-de-shu-zi-lcof著作权归领扣网络所有原创 2021-06-21 10:49:42 · 103 阅读 · 0 评论 -
【剑指offer】【C++】【回溯法之排序树】38. 字符串的排列
文章目录1 题目2 代码1)传入字符串字符不重复,那么就不需要去判断是否存在字符的重复问题。2 主要思想1)回溯法理解:2)本题就是排序树1 题目输入一个字符串,打印出该字符串中字符的所有排列。你可以以任意顺序返回这个字符串数组,但里面不能有重复元素。示例:输入:s = "abc"输出:["abc","acb","bac","bca","cab","cba"]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/zi-fu-chuan-de-原创 2021-05-31 13:09:24 · 245 阅读 · 0 评论 -
【剑指offer】【C++】68 - II. 二叉树的最近公共祖先
文章目录1 题目2 主要思路:3 代码:1 题目给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”例如,给定如下二叉树: root = [3,5,1,6,2,0,8,null,null,7,4]示例 1:输入: root = [3,5,1,6,2,0,8,null,null,7,4], p原创 2021-05-30 08:41:32 · 217 阅读 · 0 评论 -
【剑指offer】【C++】68 - I. 二叉搜索树的最近公共祖先
文章目录1 题目2 主要思路1)考点:二叉搜索树的遍历或者查找2)主要想法:3)考虑问题:3代码1)我的代码2)优秀代码:迭代方式3)优秀代码:递归方式1 题目给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”例如,给定如下二叉搜索树: root = [6,2,8,0,4,7,9,null,nul原创 2021-05-28 14:23:55 · 245 阅读 · 0 评论 -
【剑指offer】【C++】55 - I. 二叉树的深度
输入一棵二叉树的根节点,求该树的深度。从根节点到叶节点依次经过的节点(含根、叶节点)形成树的一条路径,最长路径的长度为树的深度。例如:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它的最大深度 3 。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/er-cha-shu-de-shen-du-lcof著作权归领扣网络所有。商业转载请联系官方原创 2021-05-28 00:31:03 · 203 阅读 · 0 评论 -
【剑指offer】【C++】54. 二叉搜索树的第k大节点
给定一棵二叉搜索树,请找出其中第k大的节点。 示例 1:输入: root = [3,1,4,null,2], k = 1 3 / \ 1 4 \ 2输出: 4示例 2:输入: root = [5,3,6,2,4,null,null,1], k = 3 5 / \ 3 6 / \ 2 4 / 1输出: 4 限制:1 ≤ k ≤ 二叉搜索树元素个数来源:力扣(LeetCode)链接:h原创 2021-05-27 23:13:23 · 220 阅读 · 1 评论 -
【剑指offer】【C++】32 - II. 从上到下打印二叉树 II
从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行。 例如:给定二叉树: [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回其层次遍历结果:[ [3], [9,20], [15,7]]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/cong-shang-dao-xia-da-yin-er-cha-shu-ii-l原创 2021-05-25 12:42:02 · 146 阅读 · 0 评论 -
【剑指offer】【C++】【二叉树】28. 对称的二叉树
请实现一个函数,用来判断一棵二叉树是不是对称的。如果一棵二叉树和它的镜像一样,那么它是对称的。例如,二叉树 [1,2,2,3,4,4,3] 是对称的。 1 / \ 2 2 / \ / \3 4 4 3但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的: 1 / \ 2 2 \ \ 3 3来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/dui-原创 2021-05-25 10:41:43 · 135 阅读 · 0 评论 -
二叉树的深度优先和广度优先遍历【转载】
二叉树的深度优先和广度优先遍历(超详细步骤)(java实现)转载 2021-05-24 23:28:50 · 73 阅读 · 0 评论 -
【剑指offter】【C++】【二叉树】27. 二叉树的镜像
题目:请完成一个函数,输入一个二叉树,该函数输出它的镜像。例如输入: 4 / \ 2 7 / \ / \1 3 6 9镜像输出: 4 / \ 7 2 / \ / \9 6 3 11 主要思路: 考的知识是二叉树的遍历。在遍历非叶子节点时,交换左右指针的内容即可。2 实现代码:/** * Definition for a binary tree node. * struct Tree原创 2021-05-24 22:45:28 · 161 阅读 · 2 评论 -
【剑指offer】【C++】【栈】59-II 队列的最大值
题目:请定义一个队列并实现函数 max_value 得到队列里的最大值,要求函数max_value、push_back 和 pop_front 的均摊时间复杂度都是O(1)。若队列为空,pop_front 和 max_value 需要返回 -11 思考: 考虑一个队列如:1 2 5 1 4 7 4 2 3,逐渐入队时,应该使用一个队列queue(适配器)来保存此输入数据。另外对于其最大值的保存采用双向队列deque(容器)来保存。<1>queue:1deque:1<2&原创 2021-05-19 23:32:38 · 197 阅读 · 0 评论 -
【剑指offer】【C++】【栈】30.包含min函数的栈【简单】
题目:定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调用 min、push 及 pop 的时间复杂度都是 O(1)。1 思考:1)使用的数据结构: 数组。定义栈数据结构,可以使用数组或者链表来实现基本的运算。在《大话数据结构》中作者提出使用数组实现栈时可以不固定栈头以及栈尾,也就是说达到栈尾以后拐到栈头继续存。 **链表。**使用链表来存储是我比较喜欢的,因为不用考虑分配的内存不够用的情况,但是在每个节点处会多出一个指针域,以及在访问时需要遍历。但是栈.原创 2021-05-19 15:51:55 · 230 阅读 · 0 评论