剑指Offer
文章平均质量分 76
知初与修一
记录学习过程,分享学习知识
展开
-
剑指Offer:[第29天 动态规划(困难)]--->n个骰子的点数
文章目录一、题目描述二、思路分析三、整体代码一、题目描述把n个骰子扔在地上,所有骰子朝上一面的点数之和为s。输入n,打印出s的所有可能的值出现的概率。你需要用一个浮点数数组返回答案,其中第 i 个元素代表这 n 个骰子所能掷出的点数集合中第 i 小的那个的概率。示例1:输入: 1输出: [0.16667,0.16667,0.16667,0.16667,0.16667,0.16667]示例2:输入: 2输出: [0.02778,0.05556,0.08333,0.11111,0.13889原创 2022-04-21 16:34:11 · 201 阅读 · 0 评论 -
剑指Offer:[第29天 动态规划(困难)]--->丑数
文章目录一、题目描述二、思路分析三、整体代码一、题目描述我们把只包含质因子 2、3 和 5 的数称作丑数(Ugly Number)。求按从小到大的顺序的第 n 个丑数。示例:输入: n = 10输出: 12解释: 1, 2, 3, 4, 5, 6, 8, 9, 10, 12 是前 10 个丑数。说明:1 是丑数。n 不超过1690。二、思路分析注:思路分析中的一些内容和图片参考自力扣各位前辈的题解,感谢他们的无私奉献思路丑数的递推性质: 丑数的因子中为质数的只能为 2,原创 2022-04-20 16:17:31 · 134 阅读 · 0 评论 -
剑指Offer:[第29天 动态规划(困难)]--->正则表达式匹配
文章目录一、题目描述二、思路分析三、整体代码一、题目描述请实现一个函数用来匹配包含’. ‘和’*‘的正则表达式。模式中的字符’.‘表示任意一个字符,而’*'表示它前面的字符可以出现任意次(含0次)。在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"abaca"匹配,但与"aa.a"和"ab*a"均不匹配。示例1:输入:s = "aa"p = "a"输出: false解释: "a" 无法匹配 "aa" 整个字符串。示例2:输入:s = "aa"原创 2022-04-19 16:10:42 · 168 阅读 · 0 评论 -
剑指Offer:[第28天 搜索与回溯算法(困难)]--->字符串的排列
文章目录一、题目描述二、思路分析三、整体代码一、题目描述输入一个字符串,打印出该字符串中字符的所有排列。你可以以任意顺序返回这个字符串数组,但里面不能有重复元素。示例:输入:s = "abc"输出:["abc","acb","bac","bca","cab","cba"]限制:1 <= s 的长度 <= 8二、思路分析注:思路分析中的一些内容和图片参考自力扣各位前辈的题解,感谢他们的无私奉献思路对于一个长度为 nnn 的字符串(假设字符互不重复),其排列方案数共原创 2022-04-06 21:43:05 · 231 阅读 · 0 评论 -
剑指Offer:[第28天 搜索与回溯算法(困难)]--->序列化二叉树
文章目录一、题目描述二、思路分析三、整体代码一、题目描述请实现两个函数,分别用来序列化和反序列化二叉树。你需要设计一个算法来实现二叉树的序列化与反序列化。这里不限定你的序列 / 反序列化算法执行逻辑,你只需要保证一个二叉树可以被序列化为一个字符串并且将这个字符串反序列化为原始的树结构。提示: 输入输出格式与 LeetCode 目前使用的方式一致,详情请参阅 LeetCode 序列化二叉树的格式。你并非必须采取这种方式,你也可以采用其他的方法解决这个问题。示例:输入:root = [1,2,3,原创 2022-04-02 17:09:37 · 777 阅读 · 0 评论 -
剑指Offer:[第27天 栈与队列(困难)]--->队列的最大值
文章目录一、题目描述二、思路分析三、整体代码一、题目描述请定义一个队列并实现函数 max_value 得到队列里的最大值,要求函数max_value、push_back 和 pop_front 的均摊时间复杂度都是O(1)。若队列为空,pop_front 和 max_value 需要返回 -1示例1:输入: ["MaxQueue","push_back","push_back","max_value","pop_front","max_value"][[],[1],[2],[],[],[]]原创 2022-04-01 21:56:16 · 277 阅读 · 0 评论 -
剑指Offer:[第27天 栈与队列(困难)]--->滑动窗口的最大值
文章目录一、题目描述二、思路分析三、整体代码一、题目描述给定一个数组 nums 和滑动窗口的大小 k,请找出所有滑动窗口里的最大值。示例:输入: nums = [1,3,-1,-3,5,3,6,7], 和 k = 3输出: [3,3,5,5,6,7] 解释: 滑动窗口的位置 最大值--------------- -----[1 3 -1] -3 5 3 6 7 3 1 [3 -1 -3] 5原创 2022-04-01 17:18:12 · 416 阅读 · 0 评论 -
剑指Offer:[第26天 字符串(中等)]--->把字符串转换成整数
文章目录一、题目描述二、思路分析三、整体代码一、题目描述写一个函数 StrToInt,实现把字符串转换成整数这个功能。不能使用 atoi 或者其他类似的库函数。首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。当我们寻找到的第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字组合起来,作为该整数的正负号;假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成整数。该字符串除了有效的整数部分之后也可能会存在多余的字符,这些字符可以被忽略,它们对原创 2022-03-31 22:54:17 · 134 阅读 · 3 评论 -
剑指Offer:[第26天 字符串(中等)]--->表示数值的字符串
文章目录一、题目描述二、思路分析三、整体代码一、题目描述请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。数值(按顺序)可以分成以下几个部分:1、若干空格2、一个 小数 或者 整数3、(可选)一个 ‘e’ 或 ‘E’ ,后面跟着一个 整数4、若干空格小数(按顺序)可以分成以下几个部分:1、(可选)一个符号字符(’+’ 或 ‘-’)2、下述格式之一:----至少一位数字,后面跟着一个点 ‘.’----至少一位数字,后面跟着一个点 ‘.’ ,后面再跟着至少一位数字----一原创 2022-03-31 21:51:32 · 558 阅读 · 0 评论 -
剑指Offer:[第25天 模拟(中等)]--->栈的压入、弹出序列
文章目录一、题目描述二、思路分析三、整体代码一、题目描述输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如,序列 {1,2,3,4,5} 是某栈的压栈序列,序列 {4,5,3,2,1} 是该压栈序列对应的一个弹出序列,但 {4,3,5,1,2} 就不可能是该压栈序列的弹出序列。示例1:输入:pushed = [1,2,3,4,5], popped = [4,5,3,2,1]输出:true解释:我们可以按以下顺序执行:push原创 2022-03-30 21:14:41 · 113 阅读 · 0 评论 -
剑指Offer:[第25天 模拟(中等)]--->顺时针打印矩阵
文章目录一、题目描述二、思路分析三、整体代码一、题目描述输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。示例1:输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]输出:[1,2,3,6,9,8,7,4,5]示例2:输入:matrix = [[1,2,3,4],[5,6,7,8],[9,10,11,12]]输出:[1,2,3,4,8,12,11,10,9,5,6,7]限制:0 <= matrix.length <= 1000 &l原创 2022-03-29 20:48:31 · 1050 阅读 · 0 评论 -
剑指Offer:[第24天 数学(中等)]--->圆圈中最后剩下的数字
文章目录一、题目描述二、思路分析三、整体代码一、题目描述0,1,···,n-1这n个数字排成一个圆圈,从数字0开始,每次从这个圆圈里删除第m个数字(删除后从下一个数字开始计数)。求出这个圆圈里剩下的最后一个数字。例如,0、1、2、3、4这5个数字组成一个圆圈,从数字0开始每次删除第3个数字,则删除的前4个数字依次是2、0、4、1,因此最后剩下的数字是3。示例1:输入: n = 5, m = 3输出: 3示例2:输入: n = 10, m = 17输出: 2限制:1 <=原创 2022-03-29 16:06:12 · 186 阅读 · 0 评论 -
剑指Offer:[第24天 数学(中等)]--->和为s的连续正数序列
文章目录一、题目描述二、思路分析三、整体代码一、题目描述输入一个正整数 target ,输出所有和为 target 的连续正整数序列(至少含有两个数)。序列内的数字由小到大排列,不同序列按照首个数字从小到大排列。示例1:输入:target = 9输出:[[2,3,4],[4,5]]示例2:输入:target = 15输出:[[1,2,3,4,5],[4,5,6],[7,8]]限制:1<=target<=1051 <= target <= 10^51<原创 2022-03-28 21:19:30 · 443 阅读 · 1 评论 -
剑指Offer:[第24天 数学(中等)]--->剪绳子
文章目录一、题目描述二、思路分析三、整体代码一、题目描述给你一根长度为 n 的绳子,请把绳子剪成整数长度的 m 段(m、n都是整数,n>1并且m>1),每段绳子的长度记为 k[0],k[1]…k[m-1] 。请问 k[0]*k[1]*…*k[m-1] 可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是18。示例1:输入: 2输出: 1解释: 2 = 1 + 1, 1 × 1 = 1示例2:输入: 10输出: 36解原创 2022-03-28 11:18:03 · 895 阅读 · 0 评论 -
剑指Offer:[第23天 数学(简单)]--->构建乘积数组
文章目录一、题目描述二、思路分析三、整体代码一、题目描述给定一个数组 A[0,1,…,n-1],请构建一个数组 B[0,1,…,n-1],其中 B[i] 的值是数组 A 中除了下标 i 以外的元素的积, 即 B[i]=A[0]×A[1]×…×A[i-1]×A[i+1]×…×A[n-1]。不能使用除法。示例:输入: [1,2,3,4,5]输出: [120,60,40,30,24]提示:所有元素乘积之和不会溢出 32 位整数a.length <= 100000二、思路分析注:原创 2022-03-25 15:15:08 · 1342 阅读 · 0 评论 -
剑指Offer:[第23天 数学(简单)]--->数组中出现次数超过一半的数字
文章目录一、题目描述二、思路分析三、整体代码一、题目描述数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。你可以假设数组是非空的,并且给定的数组总是存在多数元素。示例1:输入: [1, 2, 3, 2, 2, 2, 5, 4, 2]输出: 2限制:1 <= 数组长度 <= 50000二、思路分析注:思路分析中的一些内容和图片参考自力扣各位前辈的题解,感谢他们的无私奉献思路本题常见的三种解法:我们这里将数组中出现次数超过一半的数字简称为众数①哈希表原创 2022-03-24 22:05:08 · 329 阅读 · 0 评论 -
剑指Offer:[第22天 位运算(中等)]--->数组中数字出现的次数Ⅱ
文章目录一、题目描述二、思路分析三、整体代码一、题目描述在一个数组 nums 中除一个数字只出现一次之外,其他数字都出现了三次。请找出那个只出现一次的数字。示例1:输入:nums = [3,4,3,3]输出:4示例2:输入:nums = [9,1,7,9,7,9,7]输出:1限制:1 <= nums.length <= 100001 <= nums[i] < 231二、思路分析注:思路分析中的一些内容和图片参考自力扣各位前辈的题解,感谢他们的无私原创 2022-03-24 21:16:58 · 1420 阅读 · 0 评论 -
剑指Offer:[第22天 位运算(中等)]--->数组中数字出现的次数
文章目录一、题目描述二、思路分析三、整体代码一、题目描述一个整型数组 nums 里除两个数字之外,其他数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)。示例1:输入:nums = [4,1,4,6]输出:[1,6] 或 [6,1]示例2:输入:nums = [1,2,10,4,1,4,3,3]输出:[2,10] 或 [10,2]限制:2 <= nums.length <= 10000二、思路分析注:思路分析中原创 2022-03-23 17:19:13 · 641 阅读 · 0 评论 -
剑指Offer:[第21天 位运算(简单)]--->不用加减乘除做加法
文章目录一、题目描述二、思路分析三、整体代码一、题目描述写一个函数,求两个整数之和,要求在函数体内不得使用 “+”、“-”、“*”、“/” 四则运算符号。示例:输入: a = 1, b = 1输出: 2提示:a, b 均可能是负数或 0结果不会溢出 32 位整数二、思路分析注:思路分析中的一些内容和图片参考自力扣各位前辈的题解,感谢他们的无私奉献思路设两数字的二进制形式 aaa、bbb,其求和 s=a+bs = a + bs=a+b,a(i)a(i)a(i) 和 b(i)原创 2022-03-22 10:09:46 · 155 阅读 · 0 评论 -
剑指Offer:[第21天 位运算(简单)]--->二进制中1的个数
文章目录一、题目描述二、思路分析三、整体代码一、题目描述编写一个函数,输入是一个无符号整数(以二进制串的形式),返回其二进制表达式中数字位数为 ‘1’ 的个数(也被称为汉明重量)。提示:①请注意,在某些语言(如 Java)中,没有无符号整数类型。在这种情况下,输入和输出都将被指定为有符号整数类型,并且不应影响您的实现,因为无论整数是有符号的还是无符号的,其内部的二进制表示形式都是相同的。②在 Java 中,编译器使用 二进制补码 记法来表示有符号整数。因此,在上面的 示例 3 中,输入表示有符原创 2022-03-21 17:18:37 · 876 阅读 · 0 评论 -
剑指Offer:[第20天 分治算法(中等)]--->二叉搜索树的后序遍历序列
文章目录一、题目描述二、思路分析三、整体代码一、题目描述输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历结果。如果是则返回 true,否则返回 false。假设输入的数组的任意两个数字都互不相同。参考以下这颗二叉搜索树: 5 / \ 2 6 / \ 1 3示例1:输入: [1,6,3,2,5]输出: false示例2:输入: [1,3,2,6,5]输出: true提示:数组长度 <= 1000二、思路分析注:思路分析原创 2022-03-21 14:47:20 · 967 阅读 · 0 评论 -
剑指Offer:[第20天 分治算法(中等)]--->数值的整数次方
文章目录一、题目描述二、思路分析三、整体代码一、题目描述实现 pow(x, n) ,即计算 x 的 n 次幂函数(即,xn)。不得使用库函数,同时不需要考虑大数问题。示例1:输入:x = 2.00000, n = 10输出:1024.00000示例2:输入:x = 2.10000, n = 3输出:9.26100示例3:输入:x = 2.00000, n = -2输出:0.25000解释:2^(-2) = 1/(2^2) = 1/4 = 0.25提示:-100.0 &l原创 2022-03-21 11:20:15 · 220 阅读 · 1 评论 -
剑指Offer:[第20天 分治算法(中等)]--->重建二叉树
文章目录一、题目描述二、思路分析三、整体代码一、题目描述输入某二叉树的前序遍历和中序遍历的结果,请构建该二叉树并返回其根节点。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。示例1:Input: preorder = [3,9,20,15,7], inorder = [9,3,15,20,7]Output: [3,9,20,null,null,15,7]示例2:Input: preorder = [-1], inorder = [-1]Output: [-1]限制:0 &原创 2022-03-21 10:20:02 · 134 阅读 · 0 评论 -
剑指Offer:[第19天 搜索与回溯算法(中等)]--->Ⅱ. 二叉树的最近公共祖先
文章目录一、题目描述二、思路分析三、整体代码一、题目描述给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 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 =原创 2022-03-20 20:58:30 · 113 阅读 · 0 评论 -
剑指Offer:[第19天 搜索与回溯算法(中等)]--->Ⅰ. 二叉搜索树的最近公共祖先
文章目录一、题目描述二、思路分析三、整体代码一、题目描述给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。例如,给定如下二叉搜索树: root = [6,2,8,0,4,7,9,null,null,3,5]示例1:输入: root = [6,2,8,0,4,7,9,null,null,3,5], p原创 2022-03-20 11:22:03 · 130 阅读 · 0 评论 -
剑指Offer:[第19天 搜索与回溯算法(中等)]--->求1+2+…+n
文章目录一、题目描述二、思路分析三、整体代码一、题目描述求 1+2+…+n ,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)示例1:输入: n = 3输出: 6示例2:输入: n = 9输出: 45限制:1 <= n <= 10000二、思路分析注:思路分析中的一些内容和图片参考自力扣各位前辈的题解,感谢他们的无私奉献思路可以看出题目中的限制条件很多,可以考虑下递归。但是通常实现递归的时候原创 2022-03-18 23:02:42 · 211 阅读 · 0 评论 -
剑指Offer:[第18天 搜索与回溯算法(中等)]--->Ⅱ. 平衡二叉树
文章目录一、题目描述二、使用步骤三、整体代码一、题目描述输入一棵二叉树的根节点,判断该树是不是平衡二叉树。如果某二叉树中任意节点的左右子树的深度相差不超过1,那么它就是一棵平衡二叉树。示例1:给定二叉树 [3,9,20,null,null,15,7] 3 / \ 9 20 / \ 15 7返回 true 示例2:给定二叉树 [1,2,2,3,3,null,null,4,4] 1 / \ 2 2 / \原创 2022-03-18 16:02:58 · 121 阅读 · 0 评论 -
剑指Offer:[第18天 搜索与回溯算法(中等)]--->Ⅰ. 二叉树的深度
文章目录一、题目描述二、思路分析三、整体代码一、题目描述输入一棵二叉树的根节点,求该树的深度。从根节点到叶节点依次经过的节点(含根、叶节点)形成树的一条路径,最长路径的长度为树的深度。例如:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它的最大深度 3 。提示:节点总数 <= 10000二、思路分析注:思路分析中的一些内容和图片参考自力扣各位前辈的题解,感谢他们的无私奉献思路原创 2022-03-18 11:21:01 · 184 阅读 · 0 评论 -
剑指Offer:[第17天 排序(中等)]--->数据流中的中位数
文章目录一、题目描述二、思路分析三、整体代码一、题目描述如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。例如:[2,3,4] 的中位数是 3[2,3] 的中位数是 (2 + 3) / 2 = 2.5设计一个支持以下两种操作的数据结构:----void addNum(int num) - 从数据流中添加一个整数到数据结构中。----double findM原创 2022-03-18 09:53:33 · 187 阅读 · 0 评论 -
剑指Offer:[第17天 排序(中等)]--->最小的k个数
文章目录一、题目描述二、思路分析三、整体代码一、题目描述输入整数数组 arr ,找出其中最小的 k 个数。例如,输入4、5、1、6、2、7、3、8这8个数字,则最小的4个数字是1、2、3、4。示例1:输入:arr = [3,2,1], k = 2输出:[1,2] 或者 [2,1]示例2:输入:arr = [0,1,2,1], k = 1输出:[0]限制:0 <= k <= arr.length <= 100000 <= arr[i] <= 10000原创 2022-03-17 17:12:46 · 827 阅读 · 0 评论 -
剑指Offer:[第16天 排序(简单)]--->扑克牌中的顺子
文章目录一、题目描述二、思路分析三、整体代码一、题目描述从若干副扑克牌中随机抽 5 张牌,判断是不是一个顺子,即这5张牌是不是连续的。2~10为数字本身,A为1,J为11,Q为12,K为13,而大、小王为 0 ,可以看成任意数字。A 不能视为 14。示例1:输入: [1,2,3,4,5]输出: True示例2:输入: [0,0,1,2,5]输出: True限制:数组长度为 5数组的数取值为 [0, 13] .二、思路分析注:思路分析中的一些内容和图片参考自力扣各位前辈的原创 2022-03-16 12:17:08 · 469 阅读 · 0 评论 -
剑指Offer:[第16天 排序(简单)]--->把数组排成最小的数
文章目录一、题目描述二、思路分析三、整体代码一、题目描述输入一个非负整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。示例1:输入: [10,2]输出: "102"示例2:输入: [3,30,34,5,9]输出: "3033459"提示:0 < nums.length <= 100说明:输出结果可能非常大,所以你需要返回一个字符串而不是整数拼接起来的数字可能会有前导 0,最后结果不需要去掉前导 0二、思路分析注:思路分原创 2022-03-15 16:56:14 · 859 阅读 · 0 评论 -
剑指Offer:[第15天 搜索与回溯算法(中等)]--->二叉搜索树的第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 ≤ 二叉搜索树原创 2022-03-10 10:51:43 · 437 阅读 · 0 评论 -
剑指Offer:[第15天 搜索与回溯算法(中等)]--->二叉搜索树与双向链表
文章目录一、题目描述二、思路分析三、整体代码一、题目描述输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的循环双向链表。要求不能创建任何新的节点,只能调整树中节点指针的指向。为了让您更好地理解问题,以下面的二叉搜索树为例:我们希望将这个二叉搜索树转化为双向循环链表。链表中的每个节点都有一个前驱和后继指针。对于双向循环链表,第一个节点的前驱是最后一个节点,最后一个节点的后继是第一个节点。下图展示了上面的二叉搜索树转化成的链表。“head” 表示指向链表中有最小元素的节点。特别地,我们希望可以就地原创 2022-03-09 17:16:44 · 158 阅读 · 0 评论 -
剑指Offer:[第15天 搜索与回溯算法(中等)]--->二叉树中和为某一值的路径
文章目录一、题目描述二、思路分析三、整体代码一、题目描述给你二叉树的根节点 root 和一个整数目标和 targetSum ,找出所有 从根节点到叶子节点 路径总和等于给定目标和的路径。叶子节点 是指没有子节点的节点。示例1:输入:root = [5,4,8,11,null,13,4,7,2,null,null,5,1], targetSum = 22输出:[[5,4,11,2],[5,8,4,5]]示例2:输入:root = [1,2,3], targetSum = 5输出:[]原创 2022-03-09 15:17:47 · 278 阅读 · 0 评论 -
剑指Offer:[第14天 搜索与回溯算法(中等)]--->机器人的运动范围
文章目录一、题目描述二、思路分析三、整体代码一、题目描述地上有一个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原创 2022-03-08 15:22:39 · 98 阅读 · 0 评论 -
剑指Offer:[第14天 搜索与回溯算法(中等)]--->矩阵中的路径
文章目录一、题目描述二、思路分析三、整体代码一、题目描述给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中,返回 true ;否则,返回 false 。单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。例如,在下面的 3×4 的矩阵中包含单词 “ABCCED”(单词中的字母已标出)。示例1:输入:board = [["A","B","C","E"],原创 2022-03-08 10:48:24 · 219 阅读 · 0 评论 -
剑指Offer:[第13天 双指针(简单)]--->翻转单词顺序
文章目录一、题目描述二、思路分析三、整体代码一、题目描述输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。为简单起见,标点符号和普通字母一样处理。例如输入字符串"I am a student. “,则输出"student. a am I”。示例1:输入: "the sky is blue"输出: "blue is sky the"示例2:输入: " hello world! "输出: "world! hello"解释: 输入字符串可以在前面或者后面包含多余的空格,但是原创 2022-03-07 16:32:23 · 854 阅读 · 0 评论 -
剑指Offer:[第13天 双指针(简单)]--->和为s的两个数字
文章目录一、题目描述二、思路分析三、整体代码一、题目描述输入一个递增排序的数组和一个数字s,在数组中查找两个数,使得它们的和正好是s。如果有多对数字的和等于s,则输出任意一对即可。示例1:输入:nums = [2,7,11,15], target = 9输出:[2,7] 或者 [7,2]示例2:输入:nums = [10,26,30,31,47,60], target = 40输出:[10,30] 或者 [30,10]限制:1<=nums.length<=1051 &l原创 2022-03-05 11:27:34 · 534 阅读 · 0 评论 -
剑指Offer:[第13天 双指针(简单)]--->调整数组顺序使奇数位于偶数前面
文章目录一、题目描述二、思路分析三、整体代码一、题目描述输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数在数组的前半部分,所有偶数在数组的后半部分。示例:输入:nums = [1,2,3,4]输出:[1,3,2,4] 注:[3,1,2,4] 也是正确的答案之一。提示:0 <= nums.length <= 500000 <= nums[i] <= 10000二、思路分析注:思路分析中的一些内容和图片参考自力扣各位前辈的题解,感谢他们的原创 2022-03-05 10:30:24 · 631 阅读 · 0 评论