![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
剑指offer
以剑指offer刷题,提升自我
姚舜禹_12140
但求诗酒趁年华,不负荆棘不负梦
展开
-
剑指offer 48:最长不重复子串
首先,left和right同时指向窗口头部,右窗口不断右移动,用Set维护一个不重复的滑动窗口,当遇到重复元素,即刻移动左窗口,去重,同时记录此时窗空口的长度。用一个双端队列当成滑动窗口,当遇到队列中已经存在的数,就从队头开始删(直到删除这个存在的数),否则就从队尾添加元素。请注意,你的答案必须是子串的长度,"pwke"是一个子序列,不是子串。请从字符串中找出一个最长的不包含重复字符的子字符串,计算该最长子字符串的长度。因为无重复字符的最长子串是"wke",所以其长度为3。...原创 2022-07-28 10:39:30 · 121 阅读 · 0 评论 -
剑指offer 46:把数字翻译成字符串
题目描述:示例 1:解法:动态规划思路: 这道题类似跳台阶的问题,但是有额外的限制条件。假设给定数字 122 一共有三种翻译的可能:第一种bcc 122; 第二种 bw 1 22 ;第三种 mc 12 2。 可以观察出当从左向右遍历时,存在选择选一格字符或者选两个字符的情况 类似跳一格或者跳两格。 但是题目给出了限制条件: 如果不满足上诉条件 则不存在跳两格 只能跳一格的形式到达目标。所以当num[i-1,i] 拼接成的十位数>=10且...原创 2022-07-14 21:01:27 · 91 阅读 · 0 评论 -
剑指offer 47:礼物的最大价值
题目描述:示例1解法一:动态规划思路:代码:解法二:递归思路: 同解法一的分析,对于右下角这个位置,既可以选择来自左边的格子,也可以选择上边的格子。因此这个问题就可以从(m,n)分解成(m−1,n)与(m,n−1)这两个子问题,取子问题的最大值加上右下角这个礼物价值,因此可以用递归: 步骤如下:代码:...原创 2022-06-26 08:50:03 · 285 阅读 · 0 评论 -
剑指offer 50:第一个只出现一次的字符
题目描述:示例1示例2解法一:HashMap思路: 建立一个哈希表,遍历字符串的同时,统计每个字符出现的频率,然后再从头遍历一次字符串,在哈希表中查看每个字符串的频率,找到第一个只出现一次的字符串,返回位置,如果没找到返回-1即可。代码:解法二:数组思路: 利用字母的ASCII码,因为我们知道小写字母z的ASCII码值为122。所以我们可以使用计数的方法,开辟一个空间为123(数组下标从0开始)的数组,使用ASCII码(对应数组的下标)表示字母,去统计字母出现的次数。最后只原创 2022-06-16 17:30:47 · 93 阅读 · 1 评论 -
剑指offer 68:二叉搜索树的最近公共祖先
题目描述:示例1示例2解法一:搜索路径思路: 先来看看二叉搜索树的特性:它的每个节点值大于它的左子节点,且大于全部左子树的节点值,小于它右子节点,且小于全部右子树的节点值。因此二叉搜索树一定程度上算是一种排序结构。 二叉搜索树没有相同值的节点,因此分别从根节点往下利用二叉搜索树较大的数在右子树,较小的数在左子树,可以轻松找到p、q。这样就可以直接得到从根节点到两个目标节点的路径,这样我们利用路径比较就可以找到最近公共祖先。 步骤如下:代码:解法二:递归思路:原创 2022-06-14 10:54:25 · 156 阅读 · 0 评论 -
剑指offer 45:把数组排成最小的数
题目描述:输入一个非负整数数组numbers,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组[3,32,321],则打印出这三个数字能排成的最小数字为321323。1、输出结果可能非常大,所以你需要返回一个字符串而不是整数2、拼接起来的数字可能会有前导 0,最后结果不需要去掉前导 0数据范围:0<=len(numbers)<=100示例1输入:[11,3]返回值:"113"示例2输入:[]返回值:""原创 2022-05-21 09:01:13 · 339 阅读 · 0 评论 -
剑指offer 44:数字序列中某一位的数字
题目描述:数字以 0123456789101112131415... 的格式作为一个字符序列,在这个序列中第 2 位(从下标 0 开始计算)是 2 ,第 10 位是 1 ,第 13 位是 1 ,以此类题,请你输出第 n 位对应的数字。数据范围:0≤n≤10^9示例1输入:0返回值:0示例2输入:2返回值:2示例3输入:10返回值:1示例4输入:13返回值:1解法:位数减法思路:首先找规律,可以发现:小于10的数字一位原创 2022-05-20 09:29:31 · 141 阅读 · 0 评论 -
剑指offer 43:整数中1出现的次数
题目描述:输入一个整数 n ,求 1~n 这 n 个整数的十进制表示中 1 出现的次数例如, 1~13 中包含 1 的数字有 1 、 10 、 11 、 12 、 13 因此共出现 6 次注意:11 这种情况算两次数据范围: 1≤n≤30000进阶:空间复杂度 O(1),时间复杂度 O(lognn)示例1输入:13返回值:6示例2输入:0返回值:0解法一:迭代+字符串思路:从1到n逐一将数字转为字符串,然后找到每个由数字组成的字符串中1的个.原创 2022-05-17 07:45:23 · 121 阅读 · 0 评论 -
剑指offer 42:连续子数组的最大和
题目描述:输入一个长度为n的整型数组array,数组中的一个或连续多个整数组成一个子数组,子数组最小长度为1。求所有子数组的和的最大值。数据范围:1<=n<=2×105−100<=a[i]<=100要求:时间复杂度为O(n),空间复杂度为O(n)进阶:时间复杂度为 O(n),空间复杂度为O(1)示例1输入:[1,-2,3,10,-4,7,2,-5]返回值:18说明:经分析可知,输入数组的子数组[3,10,-4,7,2]可以求得最大和为18原创 2022-05-17 07:25:59 · 175 阅读 · 0 评论 -
剑指offer 41:数据流中的中位数
题目描述:如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。我们使用Insert()方法读取数据流,使用GetMedian()方法获取当前读取数据的中位数。数据范围:数据流中数个数满足1≤n≤1000,大小满足1≤val≤1000进阶: 空间复杂度O(n), 时间复杂度O(nlogn)示例1输入:[5,2,3,4,1,6,...原创 2022-05-07 08:50:10 · 224 阅读 · 0 评论 -
剑指offer 40:最小的k个数
题目描述:给定一个长度为 n 的可能有重复值的数组,找出其中不去重的最小的 k 个数。例如数组元素是4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4(任意顺序皆可)。数据范围:0≤k,n≤10000,数组中每个数的大小0≤val≤1000要求:空间复杂度O(n) ,时间复杂度O(nlogn)示例1输入:[4,5,1,6,2,7,3,8],4返回值:[1,2,3,4]说明:返回最小的4个数即可,返回[1,3,2,4]也可以示例2输入:[1原创 2022-05-07 08:11:09 · 246 阅读 · 0 评论 -
剑指offer 39:数组中出现次数超过一半的数字
题目描述:给一个长度为 n 的数组,数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组[1,2,3,2,2,2,5,4,2]。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。数据范围:n≤50000,数组中元素的值0≤val≤10000要求:空间复杂度:O(1),时间复杂度O(n)输入描述:保证数组输入非空,且保证有解示例1:输入:[1,2,3,2,2,2,5,4,2]返回值:2示例2输入:[3,3,3原创 2022-05-04 11:18:03 · 166 阅读 · 0 评论 -
剑指offer 38:字符串的排列
题目描述:输入一个长度为 n 字符串,打印出该字符串中字符的所有排列,你可以以任意顺序返回这个字符串数组。例如输入字符串ABC,则输出由字符A,B,C所能排列出来的所有字符串ABC,ACB,BAC,BCA,CBA和CAB。数据范围:n<10要求:空间复杂度O(n!),时间复杂度 O(n!)输入描述:输入一个字符串,长度不超过10,字符只包括大小写字母。示例1输入:"ab"返回值:["ab","ba"]说明:返回["ba","ab"]也是正确的示例2.原创 2022-05-04 10:57:00 · 563 阅读 · 0 评论 -
剑指offer 37:序列化二叉树
题目描述:请实现两个函数,分别用来序列化和反序列化二叉树,不对序列化之后的字符串进行约束,但要求能够根据序列化之后的字符串重新构造出一棵与原二叉树相同的树。二叉树的序列化(Serialize)是指:把一棵二叉树按照某种遍历方式的结果以某种格式保存为字符串,从而使得内存中建立起来的二叉树可以持久保存。序列化可以基于先序、中序、后序、层序的二叉树等遍历方式来进行修改,序列化的结果是一个字符串,序列化时通过 某种符号表示空节点(#)二叉树的反序列化(De...原创 2022-04-28 15:38:47 · 235 阅读 · 0 评论 -
剑指offer 36:二叉搜索树与双向链表
题目描述:输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。如下图所示:数据范围:输入二叉树的节点数0≤n≤1000,二叉树中每个节点的0≤val≤1000要求:空间复杂度O(1)(即在原树上操作),时间复杂度O(n)注意:1、要求不能创建任何新的结点,只能调整树中结点指针的指向。当转化完成以后,树中节点的左指针需要指向前驱,树中节点的右指针需要指向后继2、返回链表中的第一个节点的指针3、函数返回的TreeNode,有左右指针,其实可以看成一个双向链表的数据结构4.原创 2022-03-29 17:14:37 · 695 阅读 · 0 评论 -
剑指offer 35:复杂链表的复制
题目描述:输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针random指向一个随机节点),请对此链表进行深拷贝,并返回拷贝后的头结点。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空)。下图是一个含有5个结点的复杂链表。图中实线箭头表示next指针,虚线箭头表示random指针。为简单起见,指向null的指针没有画出。示例:输入:{1,2,3,4,5,3,5,#,2,#}输出:{1,2,3,4,5,3,5,#,2,#}.原创 2022-03-27 19:02:06 · 123 阅读 · 0 评论 -
剑指offer 33:二叉搜索树的后序遍历序列
题目描述:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则返回 true ,否则返回 false 。假设输入的数组的任意两个数字都互不相同。数据范围: 节点数量0≤n≤1000,节点上的值满足1≤val≤105,保证节点上的值各不相同要求:空间复杂度O(n),时间时间复杂度O(n^2)提示:1、二叉搜索树是指父亲节点大于左子树中的全部节点,但是小于右子树中的全部节点的树。2、该题我们约定空树不是二叉搜索树3、后序遍历是指按照 “左子树-右子树-根节...原创 2022-03-08 14:08:32 · 212 阅读 · 0 评论 -
剑指offer 32:从上往下打印二叉树
题目描述:不分行从上往下打印出二叉树的每个节点,同层节点从左至右打印。例如输入{8,6,10,#,#,2,1},如以下图中的示例二叉树,则依次打印8,6,10,2,1(空节点不打印,跳过),请你将打印的结果存放到一个数组里面,返回。数据范围:0<=节点总数<=1000-1000<=节点值<=1000示例1输入:{8,6,10,#,#,2,1}返回值:[8,6,10,2,1]示例2输入:{5,4,#,3,#,2,#,1}返回值:原创 2022-01-13 22:19:27 · 71 阅读 · 0 评论 -
剑指offer 31:栈的压入、弹出序列
题目描述:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。1. 0<=pushV.length == popV.length <=10002. -1000<=pushV[i]<=10003. pushV 的所有数字均不相同示例1输入:[1原创 2022-01-13 18:04:48 · 102 阅读 · 0 评论 -
剑指offer 30:包含min函数的栈
题目描述:定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的 min 函数,输入操作时保证 pop、top和min函数操作时,栈中一定有元素。此栈包含的方法有:push(value):将value压入栈中pop():弹出栈顶元素top():获取栈顶元素min():获取栈中最小元素数据范围:操作数量满足,输入的元素满足进阶:栈的各个操作的时间复杂度是,空间复杂度是示例:输入:["PSH-1","PSH2","MIN","TOP",...原创 2022-01-06 14:42:47 · 417 阅读 · 0 评论 -
剑指offer 29:顺时针打印矩阵
题目描述:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵:[[1,2,3,4],[5,6,7,8],[9,10,11,12],[13,14,15,16]]则依次打印出数字[1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10]数据范围:0 <= matrix.length <= 1000 <= matrix[i].length<= 100示例1输入:[[1,.原创 2022-01-06 08:02:52 · 123 阅读 · 0 评论 -
剑指offer 19:正则表达式匹配
题目描述:请实现一个函数用来匹配包括'.'和'*'的正则表达式。模式中的字符'.'表示任意一个字符,而'*'表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"ab*ac*a"匹配,但是与"aa.a"和"ab*a"均不匹配数据范围:1.str 可能为空,且只包含从a-z的小写字母。2.pattern 可能为空,且只包含从a-z的小写字母以及字符.和*,无连续的'*'。3.1 <= ...原创 2022-01-04 06:07:40 · 130 阅读 · 0 评论 -
剑指offer 28:对称的二叉树
题目描述:给定一棵二叉树,判断其是否是自身的镜像(即:是否对称)例如: 下面这棵二叉树是对称的下面这棵二叉树不对称。数据范围:节点数满足 0≤n≤1000,节点上的值满足∣val∣≤1000要求:空间复杂度O(n),时间复杂度O(n)备注:你可以用递归和迭代两种方法解决这个问题示例1输入:{1,2,2,3,4,4,3}返回值:true示例2输入:{8,6,9,5,7,7,5...原创 2022-01-02 07:35:00 · 185 阅读 · 0 评论 -
剑指offer 27:二叉树的镜像
题目描述:操作给定的二叉树,将其变换为源二叉树的镜像。数据范围:二叉树的节点数0≤n≤1000 , 二叉树每个节点的值0≤val≤1000要求: 空间复杂度 O(n)。本题也有原地操作,即空间复杂度 O(1) 的解法,时间复杂度 O(n)O(n)比如:源二叉树镜像二叉树示例1输入:{8,6,10,5,7,9,11}返回值:{8,10,6,11,9,7,5}说明:如题面所示示例2输入:{}返回值:{}解法一:递归思路:1、处.原创 2021-12-31 18:30:17 · 621 阅读 · 0 评论 -
剑指offer 26:树的子结构
题目描述:输入两棵二叉树A,B,判断B是不是A的子结构。(我们约定空树不是任意一个树的子结构)假如给定A为{8,8,7,9,2,#,#,#,#,4,7},B为{8,9,2},2个树的结构如下,可以看出B是A的子结构。数据范围:0 <= A的节点个数 <= 100000 <= B的节点个数 <= 10000示例1输入:{8,8,7,9,2,#,#,#,#,4,7},{8,9,2}返回值:true示例2输入:{1,2,3,4,5.原创 2021-12-31 08:27:22 · 238 阅读 · 0 评论 -
剑指offer 20:表示数值的字符串
题目描述:请实现一个函数用来判断字符串str是否表示数值(包括科学计数法的数字,小数和整数)。科学计数法的数字(按顺序)可以分成以下几个部分:1.若干空格2.一个整数或者小数3.(可选)一个'e'或'E',后面跟着一个整数(可正可负)4.若干空格小数(按顺序)可以分成以下几个部分:1.若干空格2.(可选)一个符号字符('+'或'-')3. 可能是以下描述格式之一:3.1至少一位数字,后面跟着一个点'.'3.2至少一位数字,后面跟着一个点'...原创 2021-12-29 09:09:28 · 176 阅读 · 0 评论 -
剑指offer 23:链表中环的入口节点
题目描述:给一个长度为n链表,若其中包含环,请找出该链表的环的入口结点,否则,返回null。数据范围: n≤10000,1<=结点值<=10000要求:空间复杂度O(1),时间复杂度O(n)例如,输入{1,2},{3,4,5}时,对应的环形链表如下图所示:可以看到环的入口结点的结点值为3,所以返回结点值为3的结点。输入描述:输入分为2段,第一段是入环前的链表部分,第二段是链表环的部分,后台会根据第二段是否为空将这两段组装成一个无环或者有环单链表返回值描.原创 2021-12-03 14:55:38 · 257 阅读 · 0 评论 -
剑指offer 16:数值的整数次方
题目描述:实现函数 double Power(double base, int exponent),求base的exponent次方。注意:1.保证base和exponent不同时为0。2.不得使用库函数,同时不需要考虑大数问题3.有特殊判题,不用考虑小数点后面0的位数。数据范围: |base| <= 100,|exponent|<=100,保证最终结果一定满足 | val | <= 10^4进阶:空间复杂度O(1),时间复杂度O(n)示例1...原创 2021-12-02 22:00:34 · 789 阅读 · 0 评论 -
剑指offer 17:打印从1到最大的n位数
题目描述:输入数字n,按顺序打印出从 1 到最大的 n 位十进制数。比如输入 3,则打印出 1、2、3 一直到最大的 3 位数 999。1. 用返回一个整数列表来代替打印2. n 为正整数示例1输入:1返回值:[1,2,3,4,5,6,7,8,9]解法一:Math.pow()思路:以 n=3 为例,我们取10的3次方为1000。当 n=3 的时候,我们需要打印从1到999的数字。因此,取范围为1 ~ 10^3-1,数组大小为10^3-1,然后遍历赋值即可。代..原创 2021-12-01 10:27:14 · 555 阅读 · 0 评论 -
剑指offer 15:二进制中1的个数
题目描述:输入一个整数 n ,输出该数32位二进制表示中1的个数。其中负数用补码表示。数据范围:−2^31<=n<=2^31−1即范围为:−2147483648<=n<=2147483647示例1输入:10返回值:2说明:十进制中10的32位二进制表示为0000 0000 0000 0000 0000 0000 0000 1010,其中有两个1。示例2输入:-1返回值:32说明:负数使用补码表示 ,-1的32位二进制表示为1111原创 2021-11-29 10:43:32 · 538 阅读 · 0 评论 -
剑指offer 14:剪绳子
题目描述:给你一根长度为 n 的绳子,请把绳子剪成整数长的 m 段( m 、 n 都是整数, n > 1 并且 m > 1 , m <= n ),每段绳子的长度记为 k[1],...,k[m] 。请问 k[1]*k[2]*...*k[m] 可能的最大乘积是多少?例如,当绳子的长度是 8 时,我们把它剪成长度分别为 2、3、3 的三段,此时得到的最大乘积是 18 。数据范围: 2≤n≤60进阶:空间复杂度O(1),时间复杂度 O(n)输入描述:输入一个数n,意义见题面。.原创 2021-11-29 09:54:43 · 311 阅读 · 0 评论 -
剑指offer 13:机器人的运动范围
题目描述:地上有一个 rows 行和 cols 列的方格。坐标从 [0,0] 到 [rows-1,cols-1] 。一个机器人从坐标 [0,0] 的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于 threshold 的格子。 例如,当threshold为 18 时,机器人能够进入方格 [35,37] ,因为 3+5+3+7 = 18。但是,它不能进入方格 [35,38] ,因为 3+5+3+8 = 19 。请问该机器人能够达到多少个格子?...原创 2021-11-26 08:56:01 · 177 阅读 · 0 评论 -
剑指offer 11:旋转数组的最小数字
题目描述:解法一:暴力法思路:直接遍历数组,找到最小值即可。代码:import java.util.*;public class Solution { public int minNumberInRotateArray(int [] array) { int min = array[0]; for(int i=0; i < array.length; i++){ min = Math.min(min, arra原创 2021-11-22 14:55:38 · 492 阅读 · 0 评论 -
剑指offer 10:斐波那契数列
题目描述:大家都知道斐波那契数列,现在要求输入一个正整数 n ,请你输出斐波那契数列的第 n 项。斐波那契数列公式如下:数据范围:1≤n≤39要求:空间复杂度O(1),时间复杂度O(n),本题也有时间复杂度O(logn)的解法。输入描述:一个正整数n返回值描述:输出一个正整数。示例1:输入:4返回值:3说明:根据斐波那契数列的定义可知,fib(1)=1,fib(2)=1,fib(3)=fib(3-1)+fib(3-2)=2,fib(4)=fib(4...原创 2021-11-21 17:06:33 · 825 阅读 · 1 评论 -
剑指offer 9:用两个栈实现队列
题目描述:用两个栈来实现一个队列,使用n个元素来完成 n 次在队列尾部插入整数(push)和n次在队列头部删除整数(pop)的功能。 队列中的元素为int类型。保证操作合法,即保证pop操作时队列内已有元素。数据范围: n≤1000要求:存储n个元素的空间复杂度为O(n),插入与删除的时间复杂度都是O(1)示例1输入:["PSH1","PSH2","POP","POP"]返回值:1,2说明:"PSH1":代表将1插入队列尾部"PSH2":代表将2插入队列尾部".原创 2021-11-21 10:16:01 · 518 阅读 · 0 评论 -
剑指offer 8:二叉树的下一个节点
题目描述:给定一个二叉树其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的next指针。下图为一棵有9个节点的二叉树。树中从父节点指向子节点的指针用实线表示,从子节点指向父节点的用虚线表示。示例:输入:{8,6,10,5,7,9,11},8返回:9解析:这个组装传入的子树根节点,其实就是整颗树,中序遍历{5,6,7,8,9,10,11},根节点8的下一个节点就是9,应该返回{9,10,11},后台只打印子树的下一个节点,所以原创 2021-11-20 19:11:23 · 443 阅读 · 0 评论 -
剑指offer 7:重建二叉树
题目描述:给定节点数为 n 二叉树的前序遍历和中序遍历结果,请重建出该二叉树并返回它的头结点。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建出如下图所示:提示:1.vin.length ==pre.length2.pre 和 vin均无重复元素3.vin出现的元素均出现在pre里4.只需要返回根结点,系统会自动输出整颗树做答案对比数据范围:0n≤2000,节点的值−10000≤val≤10000...原创 2021-11-20 11:13:21 · 1004 阅读 · 0 评论 -
剑指offer 5:替换空格
题目描述:请实现一个函数,将一个字符串s中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。数据范围:0<=len(s)<=1000。保证字符串中的字符为大写英文字母、小写英文字母和空格中的一种。进阶:时间复杂度O(n),空间复杂度O(n)示例1输入:"We Are Happy"返回值:"We%20Are%20Happy"示例2输入:" "返回值:"%20"...原创 2021-11-19 10:15:15 · 167 阅读 · 0 评论 -
剑指offer 4:二维数组中的查找
题目描述:在一个二维数组array中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。[[1,2,8,9],[2,4,9,12],[4,7,10,13],[6,8,11,15]]给定 target= 7,返回true。给定target=3,返回false。数据范围:矩阵的长宽满足0≤n,m≤500, 矩阵中的值满足0≤val≤10^9...原创 2021-11-16 10:49:37 · 243 阅读 · 0 评论 -
剑指offer 3:数组中重复的数字
题目描述:在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任一一个重复的数字。 例如,如果输入长度为7的数组[2,3,1,0,2,5,3],那么对应的输出是2或者3。存在不合法的输入的话输出-1数据范围:0 <= n <= 10000进阶:时间复杂度,空间复杂度示例1输入:[2,3,1,0,2,5,3]返回值:2说明:2或3都是对的解法一:思路:1、对数原创 2021-11-13 22:13:10 · 94 阅读 · 0 评论