LeetCode
leetcode高频题
朂後 哋箹萣
往事不回头,未来不将就,你若盛开,蝴蝶自来!
展开
-
给定一个整数N,代表你有1~N这些数字。在给定一个整数K。你可以随意排列这些数字,但是每一种排列都有若干个逆序对。返回有多少种排列,正好有K个逆序对。
给定一个整数N,代表你有1~N这些数字。在给定一个整数K。你可以随意排列这些数字,但是每一种排列都有若干个逆序对。返回有多少种排列,正好有K个逆序对。例子1:Input: n = 3, k = 0Output: 1解释:只有[1,2,3]这一个排列有0个逆序对。例子2:Input: n = 3, k = 1Output: 2解释[3,2,1]有(3,2)、(3,1)、(2,1原创 2022-12-07 09:16:08 · 348 阅读 · 0 评论 -
给定一个正数n,求裂开的方法数
给定一个正数1,裂开的方法有一种,(1) 给定一个正数2,裂开的方法有两种,(1和1)(2) 给定一个正数3,裂开的方法有三种,(1、1、1)、(1、2)(3) 给定一个正数4,裂开的方法有五种,(1、1、1、1)、(1、1、2)、(1、3)、(2、2)(4)给定一个正数n,求裂开的方法数。 动态规划优化状态依赖的技巧,注意裂开时后一种方法不能小于前一种原创 2022-12-06 20:16:17 · 197 阅读 · 0 评论 -
计算一共有多少种移除方案可以使s变为回文串
对于一个字符串, 从前开始读和从后开始读是一样的, 我们就称这个字符串是回文串。例如"ABCBA","AA", "A" 是回文串, 而"ABCD", "AAB"不是回文串。牛牛特别喜欢回文串, 他手中有一个字符串s, 牛牛在思考能否从字 符串中移除部分(0个或多个)字符使其变为回文串,并且牛牛认为空串不是回文串。牛牛发现移除的方案可能有很多种, 希望你来帮他计算一下一共有多少种移除方案可以使s变为回文串。对于两种移除方案, 如果移除的字符依次构成的序列不一样就是不同的方案。原创 2022-12-05 16:52:24 · 466 阅读 · 0 评论 -
给定一个字符串str,str表示一个公式,公式里可能有整数、加减乘除符号和左右括号,返回公式的计算结果。
给定一个字符串str,str表示一个公式,公式里可能有整数、加减乘除符号和左右括号,返回公式的计算结果。【举例】str="48*((70-65)-43)+81",返回-1816。str="3+1*4",返回7。str="3+(1*4)",返回7。【说明】1.可以认为给定的字符串一定是正确的公式,即不需要对str做公式有效性检查。2.如果是负数,就需要用括号括起来,比如"4*(-3)"。但如果负原创 2022-12-05 15:35:34 · 831 阅读 · 0 评论 -
小Q游戏过程中,他的蛇蛇最长长度可以到多少?
给定一个二维数组matrix,每个单元都是一个整数,有正有负。最开始的时候小Q操纵 一条长度为0的蛇蛇从矩阵最左侧任选一个单元格进入地图,蛇每次只能够到达当前位 置的右上相邻,右侧相邻和右下相邻的单元格。蛇蛇到达一个单元格后,自身的长度会瞬间加上该单元格的数值,任何情况下长度为负则游戏结束。小Q是个天才,他拥有一 个超能力,可以在游戏开始的时候把地图中的某一个节点的值变为其相反数(注:最多 只能改变一个节点)。问在小Q游戏过程中,他的蛇蛇最长长度可以到多少?原创 2022-12-04 22:52:09 · 299 阅读 · 0 评论 -
给定一个字符串str,求最长回文子序列长度。
给定一个字符串str,求最长回文子序列长度。原创 2022-12-04 21:41:04 · 532 阅读 · 0 评论 -
给定一个数组arr,长度为N且每个值都是正数,代表N个人的体重。再给定一个正数 limit,代表一艘船的载重。
给定一个数组arr,长度为N且每个值都是正数,代表N个人的体重。再给定一个正数 limit,代表一艘船的载重。以下是坐船规则:每艘船最多只能做两人。乘客 的体重和不能超过limit。返回如果同时让这N个人过河最少需要几条船。原创 2022-12-04 16:33:51 · 275 阅读 · 0 评论 -
Nim博弈问题
给定一个非负数组,每一个值代表该位置上有几个铜板。a和b玩游戏,a先手,b后手, 轮到某个人的时候,只能在一个位置上拿任意数量的铜板,但是不能不拿。谁最先把铜 板拿完谁赢。假设a和b都极度聪明,请返回获胜者的名字。原创 2022-12-04 15:31:40 · 80 阅读 · 0 评论 -
给定一个 N×3 的矩阵 matrix,对于每一个长度为 3 的小数组 arr,都表示一个大楼的三个数据,请返回整体的轮廓线数组。
给定一个 N×3 的矩阵 matrix,对于每一个长度为 3 的小数组 arr,都表示一个大楼的三个数 据。arr[0]表示大楼的左边界,arr[1]表示大楼的右边界,arr[2]表示大楼的高度(一定大于 0)。 每座大楼的地基都在 X 轴上,大楼之间可能会有重叠,请返回整体的轮廓线数组。【举例】 matrix ={{2,5,6}, {1,7,4}, {4,6,7}, {3,6,5}, {10,13,2}, {9,11,3}, {12,14,4},{10,12,5} }返回: {{1原创 2022-12-04 12:04:51 · 221 阅读 · 0 评论 -
两个数组中,找出最大的k个数字。
问题一:给定两个整数数组A和B。A和B的长度均为n、元素从小到大排好序了。希望从A和B数组中,找出最大的k个数字。问题二:给定两个整数数组A和B。A是长度为m、元素从小到大排好序了,B是长度为n、元素从小到大排好序了。希望从A和B数组中,找出最大的k个数字。原创 2022-12-02 16:51:07 · 399 阅读 · 0 评论 -
所有人喝完咖啡并洗完咖啡杯,至少来到时间点
数组arr代表每一个咖啡机冲一杯咖啡的时间,每个咖啡机只能串行的制造咖啡。现在有n个人需要喝咖啡,只能用咖啡机来制造咖啡。认为每个人喝咖啡的时间非常短,冲好的时间即是喝完的时间。每个人喝完之后咖啡杯可以选择洗或者自然挥发干净,只有一台洗咖啡杯的机器,只能串行的洗咖啡杯。洗杯子的机器洗完一个杯子时间为a,任何一个杯子自然挥发干净的时间为b。四个参数:arr, n, a, b假设时间点从0开始,返回所有人喝完咖啡并洗完咖啡杯的全部过程结束后,至少来到什么时间点。原创 2022-12-01 17:40:32 · 245 阅读 · 0 评论 -
1给定一个数组arr,如果有某个数出现次数超过了数组长度的一半,打印这个数,如果没有不打印。2给定一个数组arr和整数k,arr长度为N,如果有某些数出现次数超过了N/K,打印这些数,如果没有不打印。
1给定一个数组arr,如果有某个数出现次数超过了数组长度的一半,打印这个数,如果没有不打印。2给定一个数组arr和整数k,arr长度为N,如果有某些数出现次数超过了N/K,打印这些数,如果没有不打印。原创 2022-11-30 20:33:36 · 116 阅读 · 0 评论 -
给定一个数组arr,已知除了一种数只出现1次之外,剩下所有的数都出现了k次,如何使用O(1)的额外空间,找到这个数。
给定一个数组arr,已知除了一种数只出现1次之外,剩下所有的数都出现了k次,如何使用O(1)的额外空间,找到这个数。原创 2022-11-30 17:43:58 · 89 阅读 · 0 评论 -
给定一棵二叉树的头节点head,和一个数K。路径的定义:可以从任何一个点开始,但是只能往下走,往下可以走到任何节点停止。返回路径累加和为K的所有路径中,最长的路径最多有几个节点?
给定一棵二叉树的头节点head,和一个数K。路径的定义:可以从任何一个点开始,但是只能往下走,往下可以走到任何节点停止。返回路径累加和为K的所有路径中,最长的路径最多有几个节点?原创 2022-11-30 16:53:10 · 70 阅读 · 0 评论 -
假设所有字符都是小写字母,长字符串是str。arr是去重的单词表, 每个单词都不是空字符串且可以使用任意次。使用arr中的单词有多少种拼接str的方式,返回方法数。
假设所有字符都是小写字母,长字符串是str。arr是去重的单词表, 每个单词都不是空字符串且可以使用任意次。使用arr中的单词有多少种拼接str的方式,返回方法数。原创 2022-11-30 14:55:19 · 290 阅读 · 0 评论 -
给定一个无序数组arr,返回如果排序之后,相邻数之间的最大差值。要求:不能真的进行排序,并且要求在时间复杂度O(N)内解决。
给定一个无序数组arr,返回如果排序之后,相邻数之间的最大差值。{3,1,7,9},如果排序后{1,3,7,9},相邻数之间的最大差值来自3和7,返回4。要求:不能真的进行排序,并且要求在时间复杂度O(N)内解决。原创 2022-11-30 11:15:44 · 96 阅读 · 0 评论 -
给定一个矩阵matrix,先从左上角开始,每一步只能往右或者往下走,走到右下角。然后从右下角出发,每一步只能往上或者往左走,再回到左上角。任何一个位置的数字,只能获得一遍。返回最大路径和。
给定一个矩阵matrix,先从左上角开始,每一步只能往右或者往下走,走到右下角。然后从右下角出发,每一步只能往上或者往左走,再回到左上角。任何一个位置的数字,只能获得一遍。返回最大路径和。原创 2022-11-29 16:35:51 · 996 阅读 · 0 评论 -
保证骑士能见到公主,至少的初始血量。
给定一个二维数组 map,含义是一张地图,例如,如下矩阵:-2 -3 3-5 -10 10 30 -5游戏的规则如下:骑士从左上角出发,每次只能向右或向下走,最后到达右下角见到公主。地图中每个位置的值代表骑士要遭遇的事情。如果是负数,说明此处有怪兽,要让骑士损失血量。如果是非负数,代表此处有血瓶,能让骑士回血。骑士从左上角到右下角的过程中,走到任何一个位置时,血量都不能少于原创 2022-11-29 15:15:57 · 152 阅读 · 0 评论 -
给定一个字符类型的二维数组board,和一个字符串组成的列表words。返回words哪些单词可以被走出来。
给定一个字符类型的二维数组board,和一个字符串组成的列表words。可以从board任何位置出发,每一步可以走向上、下、左、右,四个方向,但是一条路径已经走过的位置,不能重复走。返回words哪些单词可以被走出来。原创 2022-11-28 20:15:08 · 328 阅读 · 0 评论 -
给定两个字符串S和T,返回S子序列等于T的不同子序列个数有多少个? 如果得到子序列A删除的位置与得到子序列B删除的位置不同,那么认为A和B就是不同的。
给定两个字符串S和T,返回S子序列等于T的不同子序列个数有多少个? 如果得到子序列A删除的位置与得到子序列B删除的位置不同,那么认为A和B就是不同的。原创 2022-11-28 19:58:00 · 270 阅读 · 0 评论 -
给定一个二维数组matrix,可以从任何位置出发,每一步可以走向上、下、左、右,四个方向,返回最大递增链的长度。
给定一个二维数组matrix,可以从任何位置出发,每一步可以走向上、下、左、右,四个方向。返回最大递增链的长度。例子:matrix = 5 4 3 3 1 2 2 1 3从最中心的1出发,是可以走出1 2 3 4 5的链的,而且这是最长的递增链。所以返回长度5。原创 2022-11-28 10:46:08 · 343 阅读 · 0 评论 -
在数组中求子数组的累加和是小于等于K的,并且是最大的,返回这个最大的累加和。
在数组中求子数组的累加和是小于等于K的,并且是最大的,返回这个最大的累加和。原创 2022-11-28 09:23:53 · 163 阅读 · 0 评论 -
股票交易作为事后诸葛,交易次数不同时,返回挣到的最大钱数。
问题一:给定一个数组arr,从左到右表示昨天从早到晚股票的价格,作为一个事后诸葛亮,你想知道如果随便交易,且每次交易只买卖一股,返回能挣到的最大钱数。问题二:给定一个数组arr,从左到右表示昨天从早到晚股票的价格,作为一个事后诸葛亮,你想知道如果随便交易,且每次交易只买卖一股,返回能挣到的最大钱数。问题三:给定一个数组arr,从左到右表示昨天从早到晚股票的价格,作为一个事后诸葛亮,你想知 道如果交易次数不超过K次,且每次交易只买卖一股,返回原创 2022-11-27 17:57:24 · 259 阅读 · 0 评论 -
卡特兰数公式
卡特兰数原创 2022-11-26 21:47:32 · 146 阅读 · 0 评论 -
可整合数组
先给出可整合数组的定义:如果一个数组在排序之后,每相邻两个数差的绝对值 都为 1, 则该数组为可整合数组。例如,[5,3,4,6,2]排序之后为[2,3,4,5,6], 符合每相邻两个数差的绝对值 都为 1,所以这个数组为可整合数组。 给定一个整型数组 arr,请返回其中最大可整合子数组的长度。例如, [5,5,3,2,6,4,3]的最大 可整合子数组为[5,3,2,6,4],所以返回 5。原创 2022-11-26 20:50:07 · 94 阅读 · 0 评论 -
给定一个正数N,表示你在纸上写下1~N所有的数字,返回在书写的过程中,一共写下了多少个1。
给定一个正数N,表示你在纸上写下1~N所有的数字,返回在书写的过程中,一共写下了多少个1。原创 2022-11-26 11:03:10 · 78 阅读 · 0 评论 -
现有n1+n2种面值的硬币,其中前n1种为普通币,可以取任意枚,后n2种为纪念币,每种最多只能取一枚,每种硬币有一个面值,问能用多少种方法拼出m的面值?
现有n1+n2种面值的硬币,其中前n1种为普通币,可以取任意枚,后n2种为纪念币,每种最多只能取一枚,每种硬币有一个面值,问能用多少种方法拼出m的面值?原创 2022-11-25 22:01:28 · 618 阅读 · 0 评论 -
一种消息接收并打印的结构设计
已知一个消息流会不断地吐出整数 1~N,但不一定按照顺序吐出。如果上次打印的数为 i, 那么当 i+1 出现时,请打印 i+1 及其之后接收过的并且连续的所有数,直到 1~N 全部接收 并打印完,请设计这种接收并打印的结构。初始时默认i==0。原创 2022-11-25 20:46:40 · 84 阅读 · 0 评论 -
给定一个字符串,如果只能在后面添加字符,最少添加几个能让字符串整体都是回文串,并且把整个回文字符串输出。
给定一个字符串,如果只能在后面添加字符,最少添加几个能让字符串整体都是回文串,并且把整个回文字符串输出。原创 2022-11-24 17:35:37 · 293 阅读 · 0 评论 -
打怪兽问题
int[] d,d[i]:i号怪兽的能力。int[] p,p[i]:i号怪兽要求的钱。开始时你的能力是0,你的目标是从0号怪兽开始,通过所有的怪兽。如果你当前的能力,小于i号怪兽的能力,你必须付出p[i]的钱,贿赂这个怪兽,然后怪兽就会加入你,他的能力直接累加到你的能力上;如果你当前的能力,大于等于i号怪兽的能力,你可以选择直接通过,你的能力并不会下降,你也可以选择贿赂这个怪兽,然后怪兽就会加入你,他的能力直接累加到你的能力上。原创 2022-11-24 16:14:49 · 159 阅读 · 0 评论 -
给定两个数组arrx和arry,长度都为N。代表二维平面上有N个点,第i个点的x 坐标和y坐标分别为arrx[i]和arry[i],返回求一条直线最多能穿过多少个点?
给定两个数组arrx和arry,长度都为N。代表二维平面上有N个点,第i个点的x 坐标和y坐标分别为arrx[i]和arry[i],返回求一条直线最多能穿过多少个点?原创 2022-11-23 17:34:28 · 440 阅读 · 0 评论 -
给定一个全是小写字母的字符串str,删除多余字符,使得每种字符只保留一个,并让 最终结果字符串的字典序最小。
给定一个全是小写字母的字符串str,删除多余字符,使得每种字符只保留一个,并让 最终结果字符串的字典序最小原创 2022-11-23 14:53:30 · 388 阅读 · 0 评论 -
一个数组中,如果两个数的公共因子有大于1的,则认为这两个数之间有通路。返回数组中有多少独立的域。
一个数组中,如果两个数的公共因子有大于1的,则认为这两个数之间有通路。返回数组中有多少独立的域。原创 2022-11-22 16:27:24 · 103 阅读 · 0 评论 -
在一个字符串中找到没有重复字符子串中最长的长度。
在一个字符串中找到没有重复字符子串中最长的长度。原创 2022-11-21 16:45:13 · 1727 阅读 · 0 评论 -
给定一个有序的正数数组arr和一个正数range,如果可以自由选择arr中的数字,想累加得 到 1~range 范围上所有的数,返回arr最少还缺几个数。
给定一个有序的正数数组arr和一个正数range,如果可以自由选择arr中的数字,想累加得 到 1~range 范围上所有的数,返回arr最少还缺几个数。原创 2022-11-21 16:17:50 · 125 阅读 · 0 评论 -
请写函数返回正数数组 arr 的最小不可组成和
给定一个正数数组 arr,其中所有的值都为整数,以下是最小不可组成和的概念:把 arr 每个子集内的所有元素加起来会出现很多值,其中最小的记为 min,最大的记为max 在区间[min,max]上,如果有数不可以被arr某一个子集相加得到,那么其中最小的那个数是arr 的最小不可组成和 在区间[min,max]上,如果所有的数都可以被arr的某一个子集相加得到,那么max+1是arr的最 小不可组成和。请写函数返回正数数组 arr 的最小不可组成和。原创 2022-11-21 15:34:32 · 145 阅读 · 0 评论 -
给定一个无序数组arr,如果只能再一个子数组上排序,返回如果让arr整体有序,需要排序的最短子数组长度。
给定一个无序数组arr,如果只能再一个子数组上排序,返回如果让arr整体有序,需要排序的最短子数组长度。原创 2022-11-21 12:37:01 · 91 阅读 · 0 评论 -
实现一个函数,判断aim是 否是str1和str2交错组成。
给定三个字符串str1、str2和aim,如果aim包含且仅包含来自str1和str2的所有字符, 而且在aim中属于str1的字符之间保持原来在str1中的顺序,属于str2的字符之间保持 原来在str2中的顺序,那么称aim是str1和str2的交错组成。实现一个函数,判断aim是 否是str1和str2交错组成。原创 2022-11-21 11:06:44 · 329 阅读 · 0 评论 -
给定一个正数数组arr,返回该数组能不能分成4个部分,并且每个部分的累加和相等,切分位置的数不要。
给定一个正数数组arr,返回该数组能不能分成4个部分,并且每个部分的累加和相等,切分位置的数不要。原创 2022-11-20 20:23:46 · 127 阅读 · 0 评论 -
给定两个有序数组arr1和arr2,再给定一个正数K,求两个数累加和最大的前K个,两个数必须分别来自arr1和arr2
给定两个有序数组arr1和arr2,再给定一个正数K,求两个数累加和最大的前K个,两个数必须分别来自arr1和arr2。原创 2022-11-20 19:37:01 · 277 阅读 · 0 评论