剑指offer
璀璨的秋叶
我所热爱的
——美好的世界
展开
-
剑指offer 礼物max价值
class Solution {public: int f[1355][1355]; int getMaxValue(vector<vector<int>>& grid) { f[0][0] = grid[0][0]; for (int i = 1;i <= grid.size();i ++ ) for (int j = 1;j <= grid[0].size(); j ++) ...原创 2022-04-29 20:28:47 · 155 阅读 · 0 评论 -
剑指offer---机器人的运动范围(bfs)
地上有一个m行和n列的方格,横纵坐标范围分别是0∼m−1 和0∼n−1。一个机器人从坐标(0,0)的移动,每一次只能向左,右,上,下四个方向移动一格。但是不能进入行坐标和列坐标的数位之和大于kk的格子。请问该机器人能够达到多少个格子?注意:0<=m<=50 0<=n<=50 0<=k<=100样例1输入:k=7, m=4, n=5输出:20样例2输入:k=18, m=40, n=40输出:1484解...原创 2022-04-16 15:52:31 · 116 阅读 · 0 评论 -
剑指offer字符流中第一个只出现一次的字符
请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符 go 时,第一个只出现一次的字符是 g。当从该字符流中读出前六个字符 google 时,第一个只出现一次的字符是 l。如果当前字符流没有存在出现一次的字符,返回 # 字符。数据范围字符流读入字符数量 [0,1000][0,1000]。样例输入:"google"输出:"ggg#ll"解释:每当字符流读入一个字符,就进行一次判断并输出当前的第一个只出现一次的字符。class So原创 2022-04-10 16:05:21 · 85 阅读 · 2 评论 -
剑指offer 丑数
我们把只包含质因子2、32、3和55的数称作丑数(Ugly Number)。例如6、86、8都是丑数,但1414不是,因为它包含质因子77。求第nn个丑数的值。数据范围1≤n≤10001≤n≤1000样例输入:5输出:5注意:习惯上我们把11当做第一个丑数。class Solution {public: int getUglyNumber(int n) { if(n<=1)return n; ...原创 2022-04-07 21:02:04 · 145 阅读 · 0 评论 -
剑指offer判断一颗树是不是平衡二叉树
输入一棵二叉树的根结点,判断该树是不是平衡二叉树。如果某二叉树中任意结点的左右子树的深度相差不超过11,那么它就是一棵平衡二叉树。注意:规定空树也是一棵平衡二叉树。数据范围树中节点数量[0,500][0,500]。样例输入:二叉树[5,7,11,null,null,12,9,null,null,null,null]如下所示, 5 / \ 7 11 / \ 12 9输出:true/** * Definition for a b..原创 2022-04-07 21:00:41 · 469 阅读 · 0 评论 -
剑指offer 二叉搜索树的第k个结点
给定一棵二叉搜索树,请找出其中的第 kk 小的结点。你可以假设树和 kk 都存在,并且 1≤k≤1≤k≤ 树的总结点数。数据范围树中节点数量 [1,500][1,500]。样例输入:root = [2, 1, 3, null, null, null, null] ,k = 3 2 / \ 1 3输出:3/** * Definition for a binary tree node. * struct TreeNode { * int va原创 2022-04-07 20:59:31 · 130 阅读 · 0 评论 -
剑指offer数组中数值和下标相等的元素(二分)
假设一个单调递增的数组里的每个元素都是整数并且是唯一的。请编程实现一个函数找出数组中任意一个数值等于其下标的元素。例如,在数组[−3,−1,1,3,5][−3,−1,1,3,5]中,数字33和它的下标相等。数据范围数组长度[1,100][1,100]。样例输入:[-3, -1, 1, 3, 5]输出:3注意:如果不存在,则返回-1。class Solution {public: int getNumberSameAsIndex(vector<...原创 2022-04-07 20:58:16 · 295 阅读 · 0 评论 -
剑指offer二叉树中和为某一值的路径
输入一棵二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。保证树中结点值均不小于00。数据范围树中结点的数量[0,1000][0,1000]。样例给出二叉树如下所示,并给出num=22。 5 / \ 4 6 / / \ 12 13 6 / \ / \9 1 5 1输出:[[5,4,12,1],[5,6,6,5]]/*...原创 2022-04-06 18:52:01 · 53 阅读 · 0 评论 -
剑指offer 之字形打印二叉树(层序遍历)
请实现一个函数按照之字形顺序从上向下打印二叉树。即第一行按照从左到右的顺序打印,第二层按照从右到左的顺序打印,第三行再按照从左到右的顺序打印,其他行以此类推。数据范围树中节点的数量 [0,1000][0,1000]。样例输入如下图所示二叉树[8, 12, 2, null, null, 6, 4, null, null, null, null] 8 / \ 12 2 / \ 6 4输出:[[8], [2, 12], [6, 4]]在分行打印原创 2022-04-05 21:21:11 · 85 阅读 · 0 评论 -
剑指offer 分行从上往下打印二叉树(层序遍历plus)
从上到下按层打印二叉树,同一层的结点按从左到右的顺序打印,每一层打印到一行。数据范围树中节点的数量 [0,1000][0,1000]。样例输入如下图所示二叉树[8, 12, 2, null, null, 6, null, 4, null, null, null] 8 / \ 12 2 / 6 / 4输出:[[8], [12, 2], [6], [4]]/** * Definition for a binary tree no.原创 2022-04-05 19:56:02 · 56 阅读 · 0 评论 -
剑指offer 层序遍历二叉树
从上往下打印出二叉树的每个结点,同一层的结点按照从左到右的顺序打印。数据范围树中节点的数量[0,1000][0,1000]。样例输入如下图所示二叉树[8, 12, 2, null, null, 6, null, 4, null, null, null] 8 / \ 12 2 / 6 / 4输出:[8, 12, 2, 6, 4]/** * Definition for a binary tree node. * struct T.原创 2022-04-05 17:08:17 · 88 阅读 · 0 评论 -
剑指offer 栈的弹出序列
输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,51,2,3,4,5是某栈的压入顺序,序列4,5,3,2,14,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,24,3,5,1,2就不可能是该压栈序列的弹出序列。注意:若两个序列长度不等则视为并不是一个栈的压入、弹出序列。若两个序列都为空,则视为是一个栈的压入、弹出序列。数据范围序列长度[0,1000][0,1000...原创 2022-04-05 16:37:12 · 52 阅读 · 0 评论 -
剑指offer ——包含min函数的栈
设计一个支持push,pop,top等操作并且可以在O(1)时间内检索出最小元素的堆栈。push(x)–将元素x插入栈中 pop()–移除栈顶元素 top()–得到栈顶元素 getMin()–得到栈中最小元素数据范围操作命令总数[0,100][0,100]。样例MinStack minStack = new MinStack();minStack.push(-1);minStack.push(3);minStack.push(-4);minStack.getMin(); .原创 2022-04-05 16:21:22 · 229 阅读 · 0 评论 -
剑指offer 顺时针打印矩阵(回型打印矩阵)
输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。数据范围矩阵中元素数量[0,400][0,400]。样例输入:[ [1, 2, 3, 4], [5, 6, 7, 8], [9,10,11,12]]输出:[1,2,3,4,8,12,11,10,9,5,6,7]向量法class Solution {public: vector<int> printMatrix(vector<vector<int> &...原创 2022-04-05 15:52:18 · 497 阅读 · 0 评论 -
剑指offer——树的子结构
输入两棵二叉树A,BA,B,判断BB是不是AA的子结构。我们规定空树不是任何树的子结构。数据范围每棵树的节点数量[0,1000][0,1000]。样例树AA: 8 / \ 8 7 / \ 9 2 / \ 4 7树BB: 8 / \ 9 2返回true,因为BB是AA的子结构;太简单了就不解释代码了/** * Definition for a binary tr...原创 2022-04-05 14:24:54 · 486 阅读 · 2 评论 -
剑指offer链表中环的入口结点(两种解法)
给定一个链表,若其中包含环,则输出环的入口节点。若其中不包含环,则输出null。数据范围节点 val 值取值范围[1,1000][1,1000]。链表长度[0,500][0,500]。样例给定如上所示的链表:[1, 2, 3, 4, 5, 6]2注意,这里的2表示编号是2的节点,节点编号从0开始。所以编号是2的节点就是val等于3的节点。则输出环的入口节点3./** * Definition for singly-linked list. * str...原创 2022-04-04 17:51:24 · 1065 阅读 · 0 评论 -
表示数值的字符串
请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100","5e2","-123","3.1416"和"-1E-16"都表示数值。但是"12e","1a3.14","1.2.3","+-5"和"12e+4.3"都不是。注意:小数可以没有整数部分,例如.123等于0.123; 小数点后面可以没有数字,例如233.等于233.0; 小数点前面和后面可以有数字,例如233.666; 当e或E前面没有数字时,整个字符串不能表示数字,例如.e1、e1; 当e或E后面原创 2022-04-04 16:09:21 · 409 阅读 · 0 评论 -
剑指offer ———矩阵中的路径
请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则之后不能再次进入这个格子。注意:输入的路径不为空; 所有出现的字符均为大写英文字母;数据范围矩阵中元素的总个数[0,900][0,900]。路径字符串的总长度[0,900][0,900]。样例matrix=[ ["A","B","C","E"], ["S"..原创 2022-04-02 18:27:01 · 110 阅读 · 1 评论 -
剑指offer 连续子数组最大的和
输入一个整型数组,数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为O(n)。示例1:输入: nums = [-2,1,-3,4,-1,2,1,-5,4]输出: 6解释:连续子数组[4,-1,2,1] 的和最大,为6。提示:1 <=arr.length <= 10^5 -100 <= arr[i] <= 100思路,最大子序列可能在右边或左边,如果在中间则横跨左右,且保持中间连续,所以下面2个循环...原创 2022-03-28 14:12:16 · 351 阅读 · 3 评论 -
剑指offer-------二叉树的下一个节点
给定一棵二叉树的其中一个节点,请找出中序遍历序列的下一个节点。注意:如果给定的节点是中序遍历序列的最后一个,则返回空节点; 二叉树一定不为空,且给定的节点一定不是空节点;数据范围树中节点数量 [0,100][0,100]。样例假定二叉树是:[2, 1, 3, null, null, null, null], 给出的是值等于2的节点。则应返回值等于3的节点。解释:该二叉树的结构如下,2的后继节点是3。 2 / \1 3/** * Definitio...原创 2022-04-01 19:51:09 · 92 阅读 · 2 评论 -
剑指offer旋转数组的最小数字
把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个升序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}{3,4,5,1,2}为{1,2,3,4,5}{1,2,3,4,5}的一个旋转,该数组的最小值为11。数组可能包含重复项。注意:数组内所含元素非负,若数组大小为00,请返回−1−1。数据范围数组长度[0,90][0,90]。样例输入:nums = [2, 2, 2, 0, 1]输出:0class...原创 2022-04-02 17:54:44 · 215 阅读 · 0 评论