摘要: 题目描述 给了只包含0和1的矩阵,问只包含1的最大矩形的面积? f1-转化为逐列求面积+单调栈 基本分析 怎么优化暴力枚举的想法?对每一行,可以与处理出包括自己的左边最长的1的个数,写在left矩阵中 逐列的考虑以上数组,就是n个lc_84对应的问题,找以i列为第i列为底的最大矩形面积 代码 以列为 阅读全文
posted @ 2023-03-20 21:10 zhangk1988 阅读(16) 评论(0) 推荐(0)
摘要: 题目描述 给了一个数组表示柱子的高度,柱子的宽度是1,问能勾勒出的矩形的最大面积? f1-单调栈 基本分析 可能的最大矩形面积是咋算的?对某个位置i的高度h[i]来说,最大面积是向左找到最近的比他低的高度l[i], 向右找到最近的比他低的高度r[i], 宽度是r[i] - l[i]- 1 什么结构可 阅读全文
posted @ 2023-03-20 19:57 zhangk1988 阅读(31) 评论(0) 推荐(0)
摘要: 题目描述 柱子的宽度是1,高度存在数组中,问如果按照此排列,下雨后能接多少雨水 f1-单调栈 基本分析 要计算能存雨量,需要左边界的高度>=当前标高,需要用什么结构来维护?结构是单调的 又由于可能当前标高是逐渐递增考虑的,不是只计算一次,结构需要从右边添加或者右边弹出?栈 用单调栈怎么模拟计算的过程 阅读全文
posted @ 2023-03-18 11:09 zhangk1988 阅读(47) 评论(0) 推荐(0)
摘要: 题目描述 有n任务,有m工人,有p药丸,问最多能完成多少个任务? f1 二分+二分 基本分析 总的来说为啥是二分做?最多能完成的任务具有二段性,剩下需要处理的就是写check函数,看check(x)是不是成立 怎么是一个好的安排任务的策略?假设需要处理x个任务,那么选的人肯定是最强的ws[m- x: 阅读全文
posted @ 2023-03-17 17:28 zhangk1988 阅读(53) 评论(0) 推荐(0)
摘要: 题目描述 每次可以最多跳k步,最终落点是n-1。得分定义为路径上的nums[i]之和,问最大得分? f1-动态规划+单调队列 基本分析 怎么跳可以取到最大?考虑跳到j点的最大值是f[j], 必须从满足j-i<=k的点i转移过来,问题就是在满足要求的区间内,怎么取到最大的f[i]?单调队列 队头舍去什 阅读全文
posted @ 2023-03-17 10:58 zhangk1988 阅读(50) 评论(0) 推荐(0)
摘要: 题目描述 数组points在x轴上是严格单调增,需要求一个不等式x1 + y2 + x2 - x1的最大值?要求是x2-x1不能超过k f1-分析不等式+单调队列 基本分析 怎么能让值最大?对当前x2和y2来说,在满足x2-x1<=k的区间,需要有y1-x1最大 怎么维护以上最大值?单调队列 代码 阅读全文
posted @ 2023-03-17 10:31 zhangk1988 阅读(22) 评论(0) 推荐(0)
摘要: 题目描述 数组是整数数组,需要找最长的连续子数组长度。要求是子数组内的最大值-最小值<=limit f1- 双指针+单调队列 基本分析 求最长连续子数组长度考虑什么框架?双指针 怎么维护区间内的最大值和最小值?定义两个单调队列,分别维护最大值和最小值 双指针怎么移动?r每次向右移动一个,这个时候判断 阅读全文
posted @ 2023-03-16 20:17 zhangk1988 阅读(18) 评论(0) 推荐(0)
摘要: 题目描述 数组值可以是负,需要返回一个非空的子序列和的最大值。其中对子序列的要求是相邻两个元素的原始下标不能超过k f1- dp+单调队列优化 基本分析 1.怎么联想到dp?对某个i来说,不考虑之前的,那么就是num[i], 考虑之前的就是需要在i-k到i-1之间找一个最大的f[j]值,f[i] = 阅读全文
posted @ 2023-03-16 19:28 zhangk1988 阅读(31) 评论(0) 推荐(0)
摘要: 题目描述 数组是环形数组,且含有负数,求一个子数组,具有最大和 f1-单调队列 基本分析 怎么处理环?破环成链,将n的环展开成2*n的链,在不超过n的窗口内遍历 之后怎么做?在2*n的数组上计算长度不超过n的子数组的最大和,用单调队列就行 为啥弹出的条件是i-q[0] > n , 等于不行?当前遍历 阅读全文
posted @ 2023-03-16 17:27 zhangk1988 阅读(24) 评论(0) 推荐(0)
摘要: 题目描述 数组含有负数,求一个最短子数组,子数组的和>=k f1-单调队列 基本分析 子数组和的问题怎么优化?前缀和 相比于暴力去枚举,可以有哪两个思路优化?用一个数据结构来存可能的前缀,(1)过河拆桥,如果一个前缀值满足了条件,那么他不用再考虑了,从前面弹出;(2)后浪更迭,当前遍历到的值<= 尾 阅读全文
posted @ 2023-03-16 15:52 zhangk1988 阅读(39) 评论(0) 推荐(0)
摘要: 题目描述 滑动窗口的长度是k,每次右移一位,需要返回窗口中的最大值 f1-单调队列 基本分析 维护值还是索引?索引可以判断队头是否离开,是更好的选择 0-k-1的窗口怎么维护?只是执行while弹出队尾+追加i的操作,不考虑删除队头 k-n-1的遍历中注意什么?队尾中弹出<nums[i]的索引;追加 阅读全文
posted @ 2023-03-16 11:55 zhangk1988 阅读(20) 评论(0) 推荐(0)
摘要: 题目描述 给出一个数组nums,问能不能分为k份,每份的和都相等,数组的长度不超过16 f1-状态压缩+记忆化搜索 基本分析 数组长度不超过16?暗示可以对选择情况用二进制进行表达 dfs的过程需要怎么实现?(1)参数就是当前的选择情况和对应的和;(2)最终退出条件就是s取到了mask,可以返回Tr 阅读全文
posted @ 2022-12-29 19:32 zhangk1988 阅读(44) 评论(0) 推荐(0)
摘要: 题目描述 给了一个mxn的森林矩阵,里面的数字为0代表障碍,1代表平地,>1的数代表树 题目要求你必须按照树的高度从低到高砍树,问砍完的需要最少多少步? f1-遍历排序+bfs 基本分析 路过的树可以选择不砍+且必须从树的高度由第到高度顺序砍说明什么?每次计算相邻高度树的距离,计算多次 怎么统计出相 阅读全文
posted @ 2022-12-29 15:17 zhangk1988 阅读(79) 评论(0) 推荐(0)
摘要: 题目描述 给了两个单词word1和word2,问如果将word1转化为word2需要最少操作数? 可以怎么操作?插入字符,删除字符,替换字符 f1-动态规划-自底向上 基本分析 先明确可能的操作有几种?6种 以上6种有没有等价的,可以减少思考维度?有等价的,最后剩3种,word1增加,word1删除 阅读全文
posted @ 2022-11-20 09:59 zhangk1988 阅读(43) 评论(0) 推荐(0)
摘要: 题目描述 这个题目和之前做的「10. 正则表达式匹配」比较类似,不同的是和?没有关联关系,只用考虑匹配0-多次就行 f1-折半枚举+排序+二分 基本分析 只需要考虑不同的地方,对于*取0到多次的时候,怎么用公式替代枚举?这里还是列出f[i][j]的情况,再用i-1替代i,得到f[i-1][j]的情况 阅读全文
posted @ 2022-11-14 20:13 zhangk1988 阅读(26) 评论(0) 推荐(0)