
牛客
文章平均质量分 68
主要是个人刷完题,一些个人题解看法
千北@
Knowledge has no limit limit
展开
-
【BM5 合并k个已排序的链表】
描述合并 k 个升序的链表并将结果作为一个升序的链表返回其头节点。数据范围:节点总数满足 0 ≤ n ≤ 105 ,链表个数满足 1 ≤ k ≤ 105,每个链表的长度满足 1 ≤ len ≤ 200 ,每个节点的值满足 ∣val∣ <= 1000要求:时间复杂度 O(nlogk)示例1输入:[{1,2,3},{4,5,6,7}]返回值:{1,2,3,4,5,6,7}示例2输入:[{1,2},{1,4,5},{6}]返回值:{1,1,2,4,5,6}方法一:归并排序思想(原创 2022-05-28 17:47:41 · 385 阅读 · 0 评论 -
【BM3 链表中的节点每k个一组翻转】
描述将给出的链表中的节点每 k 个一组翻转,返回翻转后的链表如果链表中的节点数不是 k 的倍数,将最后剩下的节点保持原样你不能更改节点中的值,只能更改节点本身。数据范围:0 ≤ n ≤ 2000 , 1 ≤ k ≤ 2000 ,链表中每个元素都满足 0 ≤ val ≤ 1000要求空间复杂度 O(1),时间复杂度 O(n)例如:给定的链表是 51→2→3→4→5对于 k = 2 , 你应该返回 2→1→4→3→5对于 k = 3, 你应该返回 3→2→1→4→5示例1输入:原创 2022-05-27 13:29:55 · 186 阅读 · 0 评论 -
【BM2 链表内指定区间反转】
描述将一个节点数为 size 链表 m 位置到 n 位置之间的区间反转,要求时间复杂度 O(n),空间复杂度 O(1)。例如:给出的链表为 :1→2→3→4→5→NULL, m = 2, n = 4返回 1→4→3→2→5→NULL.数据范围: 链表长度 0 < size ≤ 1000,0 < m ≤ n ≤ size,链表中每个节点的值满足 ∣val∣ ≤ 1000要求:时间复杂度 O(n) ,空间复杂度 O(n)进阶:时间复杂度 O(n), 空间复杂度 O(1原创 2022-05-26 22:02:59 · 884 阅读 · 0 评论 -
【JZ83 剪绳子(进阶版)】
描述给你一根长度为 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 。由于答案过大,请对 998244353 取模。数据范围: 2 ≤ n ≤ 1014进阶:空间复杂度 O(1) , 时间复杂度 O(lo原创 2022-05-25 14:12:56 · 198 阅读 · 0 评论 -
【JZ81 调整数组顺序使奇数位于偶数前面(二)】
描述输入一个长度为 n 整数数组,数组里面可能含有相同的元素,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前面部分,所有的偶数位于数组的后面部分,对奇数和奇数,偶数和偶数之间的相对位置不做要求,但是时间复杂度和空间复杂度必须如下要求。数据范围: 0 ≤ n ≤ 50000,数组中每个数的值 0 ≤ val ≤ 10000要求:时间复杂度 O(n),空间复杂度 O(1)示例1输入:[1,2,3,4]返回值:[1,3,2,4]说明:[3,1,2,4]或者[3,1,4,2原创 2022-05-24 09:31:25 · 254 阅读 · 0 评论 -
【JZ17 打印从1到最大的n位数】
描述输入数字 n,按顺序打印出从 1 到最大的 n 位十进制数。比如输入 3,则打印出 1、2、3 一直到最大的 3 位数 999。用返回一个整数列表来代替打印n 为正整数,0 < n <= 5示例1输入:1返回值:[1,2,3,4,5,6,7,8,9]方法:数组输出(推荐使用)思路:既然是从1开始顺序输出到 n 位数的最大值,一般来说 n 位数最大就是 n 个 9,这样不方便于计算,可以直接遍历到 n + 1 位的最小值结束,即10n。具体做法:step 1:从原创 2022-05-23 10:12:26 · 140 阅读 · 0 评论 -
【JZ14 剪绳子】
描述给你一根长度为 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,意义见题面原创 2022-05-22 10:30:05 · 203 阅读 · 0 评论 -
【JZ75 字符流中第一个不重复的字符】
描述请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符 “go” 时,第一个只出现一次的字符是 “g” 。当从该字符流中读出前六个字符 “google" 时,第一个只出现一次的字符是“ l ” 。数据范围:字符串长度满足 1 ≤ n ≤ 1000 ,字符串中出现的字符一定在 ASCII 码内。进阶:空间复杂度 O(n) ,时间复杂度 O(n)后台会用以下方式调用 Insert 和 FirstAppearingOnce 函数string caseout原创 2022-05-21 10:03:09 · 232 阅读 · 0 评论 -
【JZ62 Kids的游戏(圆圈中最后剩下的数)】
描述每年六一儿童节,牛客都会准备一些小礼物和小游戏去看望孤儿院的孩子们。其中,有个游戏是这样的:首先,让 n 个小朋友们围成一个大圈,小朋友们的编号是0 ~ n - 1。然后,随机指定一个数 m ,让编号为 0 的小朋友开始报数。每次喊到 m - 1 的那个小朋友要出列唱首歌,然后可以在礼品箱中任意的挑选礼物,并且不再回到圈中,从他的下一个小朋友开始,继续0 … m - 1报数…这样下去…直到剩下最后一个小朋友,可以不用表演,并且拿到牛客礼品,请你试着想下,哪个小朋友会得到这份礼品呢?示例1输入:原创 2022-05-20 08:39:01 · 235 阅读 · 0 评论 -
【JZ58 左旋转字符串】
描述汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列 S ,请你把其循环左移 K 位后的序列输出。例如,字符序列 S = ”abcXYZdef” , 要求输出循环左移 3 位后的结果,即 “XYZdefabc”数据范围:输入的字符串长度满足 0 ≤ len ≤ 100 , 0 ≤ n ≤ 100进阶:空间复杂度 O(n) ,时间复杂度 O(n)示例1输入:"abcXYZdef",3返回值:"XYZdefa原创 2022-05-19 10:48:03 · 217 阅读 · 0 评论 -
【JZ57 和为S的两个数字】
描述输入一个升序数组 array 和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,返回任意一组即可,如果无法找出这样的数字,返回一个空数组即可。数据范围: 0≤ len(array) ≤105 , 1 ≤ array[i] ≤ 106示例1输入:[1,2,4,7,11,15],15返回值:[4,11]说明:返回[4,11]或者[11,4]都是可以的 示例2输入:[1,5,11],10返回值:[]说明:不存在,返回空数组原创 2022-05-18 12:35:03 · 142 阅读 · 0 评论 -
【JZ74 和为S的连续正数序列】
描述小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,你能不能也很快的找出所有和为S的连续正数序列?数据范围: 0 < n ≤ 100进阶:时间复杂度 O(n)返回值描述:输出所有和为S的连续正数序列。序列内按照从小至大的顺序,序列间按照开始数字从小到大的顺序示例原创 2022-05-17 09:43:12 · 161 阅读 · 0 评论 -
【JZ49 丑数】
描述把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第 n个丑数。数据范围: 0 ≤ n ≤ 2000要求:空间复杂度 O(n) , 时间复杂度 O(n)...原创 2022-05-16 20:48:36 · 152 阅读 · 0 评论 -
【JZ45 把数组排成最小的数】
描述输入一个非负整数数组numbers,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组[3,32,321],则打印出这三个数字能排成的最小数字为321323。输出结果可能非常大,所以你需要返回一个字符串而不是整数拼接起来的数字可能会有前导 0,最后结果不需要去掉前导 0数据范围:0 <= len(numbers) <= 100示例1输入:[11,3]返回值:"113"示例2输入:[]返回值:""示例3输入:[3,32,原创 2022-05-15 10:41:25 · 608 阅读 · 0 评论 -
【JZ43 整数中1出现的次数(从1到n整数中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的个数是一定的,因此我们可以根据这个来处理原创 2022-05-14 10:56:23 · 259 阅读 · 0 评论 -
【JZ39 数组中出现次数超过一半的数字】
描述给一个长度为 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,3原创 2022-05-13 10:07:17 · 134 阅读 · 0 评论 -
【JZ21 调整数组顺序使奇数位于偶数前面(一)】
描述输入一个长度为 n 整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前面部分,所有的偶数位于数组的后面部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。数据范围: 0 ≤ n ≤ 5000,数组中每个数的值 0 ≤ val ≤ 10000要求:时间复杂度 O(n),空间复杂度 O(n)进阶:时间复杂度 O(n2),空间复杂度 O(1)示例1输入:[1,2,3,4]返回值:[1,3,2,4]示例2输入:[2,4,6,5,7]返回值:[5,7,2,4原创 2022-05-12 10:25:19 · 190 阅读 · 0 评论 -
【JZ5 替换空格】
描述请实现一个函数,将一个字符串s中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。数据范围: 0 ≤ len(s) ≤ 1000 。保证字符串中的字符为大写英文字母、小写英文字母和空格中的一种。示例1输入:"We Are Happy"返回值:"We%20Are%20Happy"示例2输入:" "返回值:"%20"方法:字符串截取相加(推荐使用)具体做法:我们可以用下标遍历字符串,每次检查下标所在原创 2022-05-11 23:31:39 · 812 阅读 · 0 评论 -
【JZ50 第一个只出现一次的字符】
描述在一个长为 字符串中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写).(从0开始计数)数据范围: 0 ≤ n ≤ 10000,且字符串只有字母组成。要求:空间复杂度 O(n),时间复杂度 O(n)示例1输入:"google"返回值:4示例2输入:"aa"返回值:-1方法一:哈希表统计频率(推荐使用)知识点:哈希表哈希表是一种根据关键码(key)直接访问值(value)的一种数据结构。而这种直接访问意味着只要知道key就能在 O(1)原创 2022-05-10 22:21:58 · 429 阅读 · 0 评论 -
【JZ66 构建乘积数组】
描述给定一个数组 A[0,1,…,n-1] ,请构建一个数组 B[0,1,…,n-1] ,其中 B 的元素 B[i]=A[0]A[1]…*A[i-1]A[i+1]…*A[n-1](除 A[i] 以外的全部元素的的乘积)。程序中不能使用除法。(注意:规定 B[0] = A[1] * A[2] * … * A[n-1],B[n-1] = A[0] * A[1] * … * A[n-2])对于 A 长度为 1 的情况,B 无意义,故而无法构建,用例中不包括这种情况。数据范围: 1 ≤ n ≤ 10 ,数组原创 2022-05-09 22:41:02 · 1233 阅读 · 0 评论 -
【JZ20 表示数值的字符串】
描述请实现一个函数用来判断字符串str是否表示数值(包括科学计数法的数字,小数和整数)。科学计数法的数字(按顺序)可以分成以下几个部分:若干空格一个整数或者小数(可选)一个 ‘e’ 或 ‘E’ ,后面跟着一个整数(可正可负)若干空格小数(按顺序)可以分成以下几个部分:若干空格(可选)一个符号字符(‘+’ 或 ‘-’)可能是以下描述格式之一:至少一位数字,后面跟着一个点 ‘.’至少一位数字,后面跟着一个点 ‘.’ ,后面再跟着至少一位数字一个点 ‘.’ ,后面跟着至少一位数字原创 2022-05-08 10:11:03 · 196 阅读 · 0 评论 -
【JZ67 把字符串转换成整数(atoi)】
描述写一个函数 StrToInt,实现把字符串转换成整数这个功能。不能使用 atoi 或者其他类似的库函数。传入的字符串可能有以下部分组成:若干空格(可选)一个符号字符(‘+’ 或 ‘-’)数字,字母,符号,空格组成的字符串表达式若干空格转换算法如下:去掉无用的前导空格第一个非空字符为+或者-号时,作为该整数的正负号,如果没有符号,默认为正数判断整数的有效部分:确定符号位之后,与之后面尽可能多的连续数字组合起来成为有效整数数字,如果没有有效的整数部分,那原创 2022-05-07 11:03:26 · 434 阅读 · 0 评论 -
【JZ61 扑克牌顺子】
描述现在有2副扑克牌,从扑克牌中随机五张扑克牌,我们需要来判断一下是不是顺子。有如下规则:A为1,J为11,Q为12,K为13,A不能视为14大、小王为 0,0可以看作任意牌如果给出的五张牌能组成顺子(即这五张牌是连续的)就输出true,否则就输出false。数据保证每组5个数字,每组最多含有4个零,数组的数取值为 [0, 13]要求:空间复杂度 O(1),时间复杂度 O(nlogn),本题也有时间复杂度 O(n) 的解法输入描述:输入五张扑克牌的值返回值描述:五张扑克牌能否组原创 2022-05-06 09:07:56 · 292 阅读 · 0 评论 -
【JZ29 顺时针打印矩阵】
描述输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下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,2,3,4],[5,6,7,8]原创 2022-05-05 09:26:03 · 358 阅读 · 0 评论 -
【JZ64 求1+2+3+...+n】
描述求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。数据范围: 0 < n ≤ 200进阶: 空间复杂度 O(1) ,时间复杂度 O(n)示例1输入:5返回值:15示例2输入:1返回值:1方法:与运算的短路递归(推荐使用)知识点:位运算计算机的数字由二进制表示,我们平常的运算是对整个数字进行运算,但是还可以按照二进制的每一位分别进行运算。常见运算有位与、位或、移位、位异或等。原创 2022-05-04 12:54:33 · 370 阅读 · 0 评论 -
【JZ56 数组中只出现一次的两个数字】
描述一个整型数组里除了两个数字只出现一次,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。数据范围:数组长度 2 ≤ n ≤ 1000,数组中每个数的大小 0 < val ≤ 1000000要求:空间复杂度 O(1),时间复杂度 O(n)提示:输出时按非降序排列。示例1输入:[1,4,1,6]返回值:[4,6]说明:返回的结果中较小的数排在前面 示例2输入:[1,2,3,3,2,9]返回值:[1,9]方法一:排序算法思路总体思路:先对原创 2022-05-03 10:01:35 · 202 阅读 · 0 评论 -
【JZ16 数值的整数次方】
描述实现函数 double Power(double base, int exponent),求base的exponent次方。注意:保证base和exponent不同时为0。不得使用库函数,同时不需要考虑大数问题有特殊判题,不用考虑小数点后面0的位数。数据范围: ∣base∣≤100 , ∣exponent∣≤100 ,保证最终结果一定满足 ∣val∣≤104进阶:空间复杂度 O(1) ,时间复杂度 O(n)示例1输入:2.00000,3返回值:8.00000示例2原创 2022-05-02 11:50:14 · 199 阅读 · 0 评论 -
【JZ65 不用加减乘除做加法】
描述写一个函数,求两个整数之和,要求在函数体内不得使用 +、-、*、/ 四则运算符号。数据范围:两个数都满足 −10 ≤ n ≤ 1000进阶:空间复杂度 O(1),时间复杂度 O(1)示例1输入:1,2返回值:3示例2输入:0,0返回值:0...原创 2022-05-01 17:30:19 · 808 阅读 · 0 评论 -
【JZ41 数据流中的中位数】
描述如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。我们使用Insert()方法读取数据流,使用GetMedian()方法获取当前读取数据的中位数。数据范围:数据流中数个数满足 1 ≤ n ≤ 1000 ,大小满足 1 ≤ val ≤ 1000进阶: 空间复杂度 O(n) , 时间复杂度 O(nlogn)示例1输入:[5,2,3,4,1,6,7,0,原创 2022-04-30 10:37:32 · 311 阅读 · 0 评论 -
【JZ40 最小的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]也可以原创 2022-04-29 10:40:40 · 255 阅读 · 0 评论 -
【JZ51 数组中的逆序对】
描述在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数 P 。并将 P 对 1000000007 取模的结果输出。 即输出 P mod 1000000007数据范围: 对于 50% 的数据, size ≤ 104对于 100% 的数据, size ≤ 105数组中所有数字的值满足 0 ≤ val ≤ 1000000要求:空间复杂度 O(n),时间复杂度 O(nlogn)输入描述:题目保证输入的数组中没有的相同的数原创 2022-04-28 10:08:52 · 331 阅读 · 0 评论 -
【JZ3 数组中重复的数字】
描述在一个长度为 n 的数组里的所有数字都在 0 到 n - 1 的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组 [2,3,1,0,2,5,3] ,那么对应的输出是 2 或者 3 。存在不合法的输入的话输出 -1数据范围: 0 ≤ n ≤ 10000进阶:时间复杂度 O(n) ,空间复杂度 O(n)示例1输入:[2,3,1,0,2,5,3]返回值:2说明:2或3都是对的 方法一原创 2022-04-27 09:43:27 · 276 阅读 · 0 评论 -
【JZ13 机器人的运动范围】
描述地上有一个 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 。请问该机器人能够达到多少个格子?数据范围:原创 2022-04-26 10:11:06 · 162 阅读 · 0 评论 -
【JZ19 正则表达式匹配】
描述请实现一个函数用来匹配包括 ’ . ’ 和 ’ * ’ 的正则表达式。模式中的字符 ’ . ’ 表示任意一个字符模式中的字符 ’ * ’ 表示它前面的字符可以出现任意次(包含0次)。在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"abaca"匹配,但是与"aa.a"和"ab*a"均不匹配数据范围:str 只包含从 a-z 的小写字母。pattern 只包含从 a-z 的小写字母以及字符 . 和 *,无连续的 ’ * ’ 。0原创 2022-04-24 10:50:54 · 505 阅读 · 0 评论 -
【JZ46 把数字翻译成字符串】
描述有一种将字母编码成数字的方式:'a'->1, 'b->2', ... , 'z->26'。我们把一个字符串编码成一串数字,再考虑逆向编译成字符串。由于没有分隔符,数字编码成字母可能有多种编译结果,例如 11 既可以看做是两个 'a' 也可以看做是一个 'k' 。但 10 只可能是 'j' ,因为 0 不能编译成任何结果。现在给一串数字,返回有多少种可能的译码结果数据范围:字符串长度满足 0 < n ≤ 90进阶:空间复杂度 O(n),时间复杂度 O(n)示例1原创 2022-04-23 13:19:35 · 524 阅读 · 0 评论 -
【JZ48 最长不含重复字符的子字符串】
描述请从字符串中找出一个最长的不包含重复字符的子字符串,计算该最长子字符串的长度。数据范围 : s.length ≤ 40000示例1输入: "abcabcbb"返回值:3说明:因为无重复字符的最长子串是"abc",所以其长度为 3。 示例2输入: "bbbbb"返回值:1说明:因为无重复字符的最长子串是"b",所以其长度为 1。 示例3输入: "pwwkew"返回值: 3说明:因为无重复字符的最长子串是 "wke",所以其长度为 3。请注意,你的答原创 2022-04-22 10:44:05 · 206 阅读 · 0 评论 -
【JZ47 礼物的最大价值】
描述在一个 m × n的棋盘的每一格都放有一个礼物,每个礼物都有一定的价值(价值大于 0)。你可以从棋盘的左上角开始拿格子里的礼物,并每次向右或者向下移动一格、直到到达棋盘的右下角。给定一个棋盘及其上面的礼物的价值,请计算你最多能拿到多少价值的礼物?如输入这样的一个二维数组,[[1,3,1],[1,5,1],[4,2,1]]那么路径 1→3→5→2→1 可以拿到最多价值的礼物,价值为12...原创 2022-04-21 13:49:13 · 561 阅读 · 0 评论 -
【JZ63 买卖股票的最好时机(一)】
描述假设你有一个数组prices,长度为n,其中prices[i]是股票在第i天的价格,请根据这个价格数组,返回买卖股票能获得的最大收益你可以买入一次股票和卖出一次股票,并非每天都可以买入或卖出一次,总共只能买入和卖出一次,且买入必须在卖出的前面的某一天如果不能获取到任何利润,请返回0假设买入卖出均无手续费数据范围: 0 ≤ n ≤ 105, 0 ≤ val ≤ 104要求:空间复杂度 O(1),时间复杂度 O(n)示例1输入:[8,9,2,5,4,7,1]返回值:5原创 2022-04-20 09:15:09 · 238 阅读 · 0 评论 -
【JZ70 矩形覆盖】
描述我们可以用 2 * 1 的小矩形横着或者竖着去覆盖更大的矩形。请问用 n 个 2 * 1 的小矩形无重叠地覆盖一个 2 * n 的大矩形,从同一个方向看总共有多少种不同的方法?数据范围: 0 ≤ n ≤ 38进阶:空间复杂度 O(1) ,时间复杂度 O(n)注意:约定 n == 0 时,输出 0比如 n=3 时,2 * 3 的矩形块有3种不同的覆盖方法(从同一个方向看):输入描述:2*1的小矩形的总个数n返回值描述:覆盖一个2*n的大矩形总共有多少种不同的方法(从同一个方向看)原创 2022-04-19 10:21:28 · 175 阅读 · 0 评论 -
【JZ71 跳台阶扩展问题】
描述一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶(n为正整数)总共有多少种跳法。数据范围: 1 ≤ n ≤ 20进阶:空间复杂度 O(1) , 时间复杂度 O(1)示例1输入:3返回值:4示例2输入:1返回值:1...原创 2022-04-18 18:32:42 · 808 阅读 · 0 评论