刷题笔记
文章平均质量分 52
记录下在leetcode刷题碰到的需要整理的题目
qbnmm
这个作者很懒,什么都没留下…
展开
-
剑指 Offer II 112. 最长递增路径
对于每个单元格,你可以往上,下,左,右四个方向移动。不能在对角线方向上移动或移动到边界外(即不允许环绕)。给定一个mxn整数矩阵matrix,找出其中最长递增路径的长度。解释最长递增路径是[3,4,5,6]。注意不允许在对角线方向上移动。输入matrix=[[9,9,4],[6,6,8],[2,1,1]]输入matrix=[[3,4,5],[3,2,6],[2,2,1]]解释最长递增路径为[1,2,6,9]。输入matrix=[[1]]...原创 2022-07-22 12:55:28 · 335 阅读 · 1 评论 -
每日一题:757. 设置交集大小至少为2
考虑集合S={2,3,4}.S与intervals中的四个区间都有至少2个相交的元素。输入intervals=[[1,3],[1,4],[2,5],[3,5]]输入intervals=[[1,2],[2,3],[2,4],[4,5]]intervals[i][j]的值是[0,10^8]范围内的整数。intervals的长度范围为[1,3000]。最小的集合S={1,2,3,4,5}.且这是S最小的情况,故我们输出3。...原创 2022-07-22 12:00:16 · 201 阅读 · 0 评论 -
剑指 Offer II 107. 矩阵中的距离
给定一个由0和1组成的矩阵mat,请输出一个大小相同的矩阵,其中每一个格子是mat中对应位置元素到最近的0的距离。输入mat=[[0,0,0],[0,1,0],[0,0,0]]输入mat=[[0,0,0],[0,1,0],[1,1,1]]输出[[0,0,0],[0,1,0],[0,0,0]]输出[[0,0,0],[0,1,0],[1,2,1]]两个相邻元素间的距离为1。mat中至少有一个0。...原创 2022-07-20 14:07:12 · 221 阅读 · 0 评论 -
剑指 Offer II 106. 二分图
给定一个二维数组graph,表示图,其中graph[u]是一个节点数组,由节点u的邻接节点组成。二分图定义如果能将一个图的节点集合分割成两个独立的子集A和B,并使图中的每一条边的两个节点一个来自A集合,一个来自B集合,就将这个图称为二分图。输入graph=[[1,2,3],[0,2],[0,1,3],[0,2]]输入graph=[[1,3],[0,2],[1,3],[0,2]]如果graph[u]包含v,那么graph[v]也会包含u。...原创 2022-07-20 13:38:08 · 185 阅读 · 0 评论 -
剑指 Offer II 105. 岛屿的最大面积
输入grid=[[0,0,1,0,0,0,0,1,0,0,0,0,0],[0,0,0,0,0,0,0,1,1,1,0,0,0],[0,1,1,0,1,0,0,0,0,0,0,0,0],[0,1,0,0,1,1,0,0,1,0,1,0,0],[0,1,0,0,1,1,0,0,1,1,1,0,0],[0,0,0,0,0,0,0,0,0,0,1,0,0],[0,0,0,0,0,0,0,1,1,1,0,0,0],[0,0,0,0,0,0,0,1,1,0,0,0,0]]找到给定的二维数组中最大的岛屿面积。...原创 2022-07-20 12:18:16 · 65 阅读 · 0 评论 -
每日一题:1260. 二维网格迁移
输入grid=[[3,8,1,9],[19,7,2,5],[4,6,11,10],[12,0,21,13]],k=4。输出[[12,0,21,13],[3,8,1,9],[19,7,2,5],[4,6,11,10]]输入grid=[[1,2,3],[4,5,6],[7,8,9]],k=1。输入grid=[[1,2,3],[4,5,6],[7,8,9]],k=9。输出[[9,1,2],[3,4,5],[6,7,8]]请你返回k次迁移操作后最终得到的二维网格。...转载 2022-07-20 11:44:52 · 82 阅读 · 0 评论 -
剑指 Offer II 104. 排列的数目
给定一个由不同正整数组成的数组nums,和一个目标整数target。请从nums中找出并返回总和为target的元素组合的个数。数组中的数字可以在一次排列中出现任意次,但是顺序不同的序列被视作不同的组合。进阶如果给定的数组中含有负数会发生什么?如果允许负数出现,需要向题目中添加哪些限制条件?输入nums=[1,2,3],target=4。输入nums=[9],target=3。请注意,顺序不同的序列被视作不同的组合。nums中的所有元素互不相同。...原创 2022-07-19 11:09:24 · 102 阅读 · 0 评论 -
剑指 Offer II 103. 最少的硬币数目
给定不同面额的硬币coins和一个总金额amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。输入coins=[1,2,5],amount=11。输入coins=[2],amount=3。输入coins=[1],amount=0。输入coins=[1],amount=1。输入coins=[1],amount=2。你可以认为每种硬币的数量是无限的。解释11=5+5+1。...原创 2022-07-19 10:28:11 · 78 阅读 · 0 评论 -
剑指 Offer II 102. 加减的目标值
例如,nums=[2,1],可以在2之前添加'+',在1之前添加'-',然后串联起来得到表达式"+2-1"。返回可以通过上述方法构造的、运算结果等于target的不同表达式的数目。输入nums=[1,1,1,1,1],target=3。给定一个正整数数组nums和一个整数target。输入nums=[1],target=1。解释一共有5种方法让最终目标和为3。...原创 2022-07-18 10:13:41 · 118 阅读 · 0 评论 -
剑指 Offer II 101. 分割等和子集
给定一个非空的正整数数组nums,请判断能否将这些数字分成元素和相等的两部分。解释nums可以分割成[1,5,5]和[11]。输入nums=[1,5,11,5]解释nums不可以分为和相等的两部分。输入nums=[1,2,3,5]原创 2022-07-18 09:13:37 · 117 阅读 · 0 评论 -
剑指 Offer II 100. 三角形中最小路径之和
相邻的结点在这里指的是下标与上一层结点下标相同或者等于上一层结点下标+1的两个结点。不考虑边界的情况下,对于新一行的第i个元素来说,dp[i]和dp[i-1]存储了上一行的最小路径,该元素可以从这两个里取较小的,在其进行完取舍后又可以把自己的最小路径存储在dp[i]上,于是dp[i-1]就需要提前用一个变量存储即可。输入triangle=[[2],[3,4],[6,5,7],[4,1,8,3]]自顶向下的最小路径和为11(即,2+3+5+1=11)。...原创 2022-07-18 08:31:29 · 93 阅读 · 0 评论 -
剑指 Offer II 099. 最小路径之和
给定一个包含非负整数的mxn网格grid,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。输入grid=[[1,3,1],[1,5,1],[4,2,1]]输入grid=[[1,2,3],[4,5,6]]解释因为路径1→3→1→1→1的总和最小。说明一个机器人每次只能向下或者向右移动一步。...原创 2022-07-17 13:46:55 · 241 阅读 · 0 评论 -
剑指 Offer II 098. 路径的数目
因为从左上到右下一共要移动m+n-2次,其中有n-1次向右,m-1次向下,所以就是从m+n-2次移动中选择m-1次向下的方案数,即。一个机器人位于一个mxn网格的左上角(起始点在下图中标记为“Start”)。从左上角开始,总共有3条路径可以到达右下角。1.向右->向下->向下。2.向下->向下->向右。3.向下->向右->向下。输入m=3,n=7。输入m=3,n=2。输入m=7,n=3。输入m=3,n=3。...原创 2022-07-17 13:33:49 · 92 阅读 · 0 评论 -
剑指 Offer II 097. 子序列的数目
字符串的一个子序列是指,通过删除一些(也可以不删除)字符且不干扰剩余字符相对位置所组成的新字符串。(例如,"ACE"是"ABCDE"的一个子序列,而"AEC"不是)给定一个字符串s和一个字符串t,计算在s的子序列中t出现的个数。如下图所示,有3种可以从s中得到"rabbit"的方案。如下图所示,有5种可以从s中得到"bag"的方案。输入s="rabbbit",t="rabbit"输入s="babgbag",t="bag"...原创 2022-07-17 13:07:02 · 61 阅读 · 0 评论 -
剑指 Offer II 096. 字符串交织
交织是s1+t1+s2+t2+s3+t3+...或者t1+s1+t2+s2+t3+s3+...输入s1="aabcc",s2="dbbca",s3="aadbbcbcac"输入s1="aabcc",s2="dbbca",s3="aadbbbaccc"dp[i][j]表示s1的第i位以前和s2的第j位以前能交织成s3的第i+j位以前。输入s1="",s2="",s3=""原创 2022-07-16 11:23:11 · 87 阅读 · 0 评论 -
剑指 Offer II 095. 最长公共子序列
一个字符串的子序列是指这样一个新的字符串它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删除任何字符)后组成的新字符串。例如,"ace"是"abcde"的子序列,但"aec"不是"abcde"的子序列。输入text1="abcde",text2="ace"输入text1="abc",text2="abc"输入text1="abc",text2="def"解释最长公共子序列是"abc",它的长度为3。...原创 2022-07-16 11:02:04 · 191 阅读 · 0 评论 -
剑指 Offer II 094. 最少回文分割
解释只需一次分割就可将s分割成["aa","b"]这样两个回文子串。第一次dp建立一个判断s[i]->s[j]是否为回文串的二维dp数组。第二次dp建立一个保存s[0]->s[i]最小切割次数的一维dp数组。给定一个字符串s,请将s分割成一些子串,使每个子串都是回文串。返回符合要求的最少分割次数。输入s="aab"s仅由小写英文字母组成。输入s="ab"输入s="a"...原创 2022-07-16 10:05:19 · 156 阅读 · 0 评论 -
每日一题:558. 四叉树交集
输入quadTree1=[[0,1],[1,0],[0,1],[1,1],[1,0],null,null,null,null,[1,0],[1,0],[1,1],[1,1]]输出[[0,0],[0,1],[0,1],[1,1],[1,0],[1,0],[1,0],[1,1],[1,1],[1,0],[1,0],[1,1],[1,1]]输出[[0,0],[1,1],[0,1],[1,1],[1,1],null,null,null,null,[1,1],[1,0],[1,0],[1,1]]...原创 2022-07-15 10:20:37 · 94 阅读 · 0 评论 -
剑指 Offer II 093. 最长斐波那契数列
dp[i][j]被定义为,第i个元素与第j个元素为最后两个数字的斐波那契数列的长度,那么一定能找到一个k原创 2022-07-15 09:50:49 · 80 阅读 · 0 评论 -
剑指 Offer II 092. 翻转字符
如果一个由'0'和'1'组成的字符串,是以一些'0'(可能没有'0')后面跟着一些'1'(也可能没有'1')的形式组成的,那么该字符串是单调递增的。如果为0,则判断是将前面的1翻转为0的代价小还是将当前点翻转为1代价更小,前面1反转为0的代价为pre,当前点反转为1代价为ans+1。我们给出一个由字符'0'和'1'组成的字符串s,我们可以将任何'0'翻转为'1'或者将'1'翻转为'0'。s中只包含字符'0'和'1'输入s="00011000"...原创 2022-07-15 09:31:11 · 178 阅读 · 0 评论 -
剑指 Offer II 091. 粉刷房子
假如有一排房子,共n个,每个房子可以被粉刷成红色、蓝色或者绿色这三种颜色中的一种,你需要粉刷所有的房子并且使其相邻的两个房子颜色不能相同。例如,costs[0][0]表示第0号房子粉刷成红色的成本花费;costs[1][2]表示第1号房子粉刷成绿色的花费,以此类推。输入costs=[[17,2,17],[16,16,5],[14,3,19]]解释将0号房子粉刷成蓝色,1号房子粉刷成绿色,2号房子粉刷成蓝色。输入costs=[[7,6,2]]...原创 2022-07-15 08:49:04 · 84 阅读 · 0 评论 -
剑指 Offer II 090. 环形房屋偷盗
力扣和上题类似,但是偷了第一家就不能偷最后一家,于是可以把问题分解成不偷第一家和不偷最后一家两种情况,取最大值原创 2022-07-14 12:12:29 · 123 阅读 · 0 评论 -
剑指 Offer II 089. 房屋偷盗
力扣dp[i] = max(dp[i-2], dp[i-3])原创 2022-07-14 11:54:15 · 116 阅读 · 0 评论 -
剑指 Offer II 088. 爬楼梯的最少成本
力扣dp[i] = min(dp[i-1], dp[i-2])原创 2022-07-14 11:45:38 · 55 阅读 · 0 评论 -
剑指 Offer II 087. 复原 IP
力扣超过四个时候剪枝当数量为4个且刚好遍历到尾部的时候加入答案原创 2022-07-13 13:17:41 · 370 阅读 · 0 评论 -
剑指 Offer II 086. 分割回文子字符串
力扣首先用中心扩展方式找到所有的回文字符串存储在字典中,键为左指针,值为右指针组成的列表使用回溯法构造所有的回文子串:backtrack(l)表示对s[l:n]构造回文分割方案,此时:(1)若l=n,收集结果;(2)否则从dic[l]中选择元素r,将s[l:(r+1)]加入stack,并执行backtrack(r+1);...原创 2022-07-13 13:00:25 · 114 阅读 · 0 评论 -
剑指 Offer II 085. 生成匹配的括号
力扣回溯法,当序列仍保持有效是才添加‘(’或‘)’,而不是每次添加,通过跟踪到目前为止放的左括号或右括号数量来做到当左括号数量小于n就可以放左括号,当右括号数量小于左括号数量,就可以放右括号...原创 2022-07-13 11:27:07 · 60 阅读 · 0 评论 -
剑指 Offer II 084. 含有重复元素集合的全排列
力扣回溯总结:数据集里的元素有没有重复的,对应的措施就是排序数据集里的元素允不允许重复使用,对应的措施就是递归的时候index加不加1for循环的选择,如果i从index开始,一般不需要辅助标记;如果i从0开始(意味着全排列),可能需要辅助标记。...原创 2022-07-12 14:33:25 · 129 阅读 · 0 评论 -
剑指 Offer II 083. 没有重复元素集合的全排列
力扣原创 2022-07-12 14:13:21 · 120 阅读 · 0 评论 -
剑指 Offer II 082. 含有重复元素集合的组合
力扣回溯法:使用“不跳跃选取一样的元素”的方式避免得到重复的结果。e.g. [a,a,a,a]这样的连续元素,只有连续选取前三个a,a,a才可以得到三个a的子原创 2022-07-12 13:46:52 · 163 阅读 · 0 评论 -
剑指 Offer II 081. 允许重复选择元素的组合(模板题)
力扣见注释原创 2022-07-11 11:28:52 · 169 阅读 · 0 评论 -
剑指 Offer II 080. 含有 k 个元素的组合
力扣回溯法,维护一个全局栈,从1开始压栈,压入后判断栈内元素是否到达k个,到达则把栈内元素整体复制到ans中,作为答案的一种,栈满后开始pop,然后再压入下一个元素,再次回溯原创 2022-07-11 11:09:17 · 107 阅读 · 0 评论 -
剑指 Offer II 078. 合并排序链表
力扣分治+归并排序原创 2022-07-10 14:41:07 · 69 阅读 · 0 评论 -
剑指 Offer II 077. 链表排序
力扣原创 2022-07-10 14:01:27 · 533 阅读 · 0 评论 -
剑指 Offer II 076. 数组中的第 k 大的数字
力扣堆排序原创 2022-07-10 12:36:55 · 197 阅读 · 0 评论 -
剑指 Offer II 075. 数组相对排序
力扣计数排序因为提示arr[i]的取值范围为[0,1000],所以可以定义一个长度为1001的数组用于模拟哈希表然后将arr1中所有元素存放到表中,key为arr1的元素,val为arr1中元素出现次数遍历arr2,只要arr2的元素在哈希表中存在,则将其赋值给arr1,并对该元素在hash表中的频次减一最后对arr2中不存在的元素,直接遍历哈希表,只要其出现,就赋值给arr1...原创 2022-07-09 09:54:26 · 181 阅读 · 0 评论 -
剑指 Offer II 074. 合并区间
力扣以区间开头为排序依据进行排序,然后再合并即可原创 2022-07-09 09:38:23 · 82 阅读 · 0 评论 -
每日一题:873. 最长的斐波那契子序列的长度
力扣动态规划状态定义:dp[i][j]:表示以arr[i]、arr[j]为结尾的斐波那契数列的最大长度dp[i][j] = Len(.....,arr[i], arr[j])状态转移:考虑在arr[i]之前有某个数字arr[k],则满足下式arr[k]+arr[i] == arr[j]所以状态转移方程根据状态转移方程就可以写出代码,为了不超时,在寻找k时没必要再遍历一遍,而是通过map来记录值到索引的映射...原创 2022-07-09 09:16:39 · 224 阅读 · 0 评论 -
剑指 Offer II 073. 狒狒吃香蕉
力扣首先,狒狒吃香蕉速度k的取值范围是[1,max(piles)],因为每小时最多也只能吃一堆香蕉,因此速度大于max(piles)也没有意义。因此本题目要求的最小能吃完香蕉速度k就是cal_time(k)原创 2022-07-08 15:09:03 · 128 阅读 · 0 评论 -
剑指 Offer II 072. 求平方根
力扣二分查找原创 2022-07-08 14:43:58 · 142 阅读 · 0 评论