随笔分类 - leetcode-hard
摘要:题目描述 给了两个数组nums1和nums2,数组内元素由0-9构成,需要从两个数组中选出k个数字,并且每个数组中值数字的相对位置不能变,怎样才能组成的值最大? f1 单调栈 基本分析 能感觉到对每个数组需要维护一个递减栈,这是是两个数组的问题,怎么处理?每个数组维护一个 怎么能保证两个数组子序列合
阅读全文
摘要:题目描述 给了只包含0和1的矩阵,问只包含1的最大矩形的面积? f1-转化为逐列求面积+单调栈 基本分析 怎么优化暴力枚举的想法?对每一行,可以与处理出包括自己的左边最长的1的个数,写在left矩阵中 逐列的考虑以上数组,就是n个lc_84对应的问题,找以i列为第i列为底的最大矩形面积 代码 以列为
阅读全文
摘要:题目描述 给了一个数组表示柱子的高度,柱子的宽度是1,问能勾勒出的矩形的最大面积? f1-单调栈 基本分析 可能的最大矩形面积是咋算的?对某个位置i的高度h[i]来说,最大面积是向左找到最近的比他低的高度l[i], 向右找到最近的比他低的高度r[i], 宽度是r[i] - l[i]- 1 什么结构可
阅读全文
摘要:题目描述 柱子的宽度是1,高度存在数组中,问如果按照此排列,下雨后能接多少雨水 f1-单调栈 基本分析 要计算能存雨量,需要左边界的高度>=当前标高,需要用什么结构来维护?结构是单调的 又由于可能当前标高是逐渐递增考虑的,不是只计算一次,结构需要从右边添加或者右边弹出?栈 用单调栈怎么模拟计算的过程
阅读全文
摘要:题目描述 滑动窗口的长度是k,每次右移一位,需要返回窗口中的最大值 f1-单调队列 基本分析 维护值还是索引?索引可以判断队头是否离开,是更好的选择 0-k-1的窗口怎么维护?只是执行while弹出队尾+追加i的操作,不考虑删除队头 k-n-1的遍历中注意什么?队尾中弹出<nums[i]的索引;追加
阅读全文
摘要:题目描述 给了一个mxn的森林矩阵,里面的数字为0代表障碍,1代表平地,>1的数代表树 题目要求你必须按照树的高度从低到高砍树,问砍完的需要最少多少步? f1-遍历排序+bfs 基本分析 路过的树可以选择不砍+且必须从树的高度由第到高度顺序砍说明什么?每次计算相邻高度树的距离,计算多次 怎么统计出相
阅读全文
摘要:题目描述 给了两个单词word1和word2,问如果将word1转化为word2需要最少操作数? 可以怎么操作?插入字符,删除字符,替换字符 f1-动态规划-自底向上 基本分析 先明确可能的操作有几种?6种 以上6种有没有等价的,可以减少思考维度?有等价的,最后剩3种,word1增加,word1删除
阅读全文
摘要:题目描述 这个题目和之前做的「10. 正则表达式匹配」比较类似,不同的是和?没有关联关系,只用考虑匹配0-多次就行 f1-折半枚举+排序+二分 基本分析 只需要考虑不同的地方,对于*取0到多次的时候,怎么用公式替代枚举?这里还是列出f[i][j]的情况,再用i-1替代i,得到f[i-1][j]的情况
阅读全文
摘要:题目描述 给了一个字符串s和字符规律p 其中p可能含有"."和"","."可以匹配任何单个字符,""需要和前面字符结合,表示匹配0-任意个前面字符 问给定的p能不能匹配s f1-序列dp 基本分析 1.怎么定义状态?dp[i][j]表示p的前j个字符能不能匹配s的前i个字符 2.对i分类还是对j分类
阅读全文
摘要:题目描述 给一个列表ss,里面存的是不同的单词贴纸,单词只包含小写字母,可以把贴纸内的每个字母单独切割, 给一个目标t,当不限制每个贴纸使用次数时,问要拼出目标t需要的最小贴纸数? ####f1-朴素动态规划+状态压缩 基本分析 看到t的长度不会超过15,想到怎么表达t的凑成状态?用s表示t的凑成状
阅读全文