力扣问题
zakariyaa33
这个作者很懒,什么都没留下…
展开
-
689. 三个无重叠子数组的最大和
直接利用三个连在一起的滑块,第一个滑块计算首个最大子数组,第二个滑块计算前一个最大子数组加当前子数组,也就是算两个子数组的最大值,第三个以此类推vector<int> maxSumOfThreeSubarrays(vector<int>& nums, int k) { vector<int> ans; int sum1 = 0, maxSum1 = 0, maxSum1Idx = 0; int sum2 = 0, maxSum12 = .原创 2021-12-08 10:37:42 · 49 阅读 · 0 评论 -
※※※※※ 488. 祖玛游戏
class Solution { int ans, used; unordered_map<char, int> rem; stack<pair<char, int>> st; void dfs(int pos, string &board) { if (used >= ans) return; if (pos == board.size()) { .原创 2021-11-09 20:23:47 · 2756 阅读 · 0 评论 -
求最长子序列问题
有规律的子序列一律用动态规划+map做当前值的最长序列等于其上一个值的最长序列+1int longestSubsequence(vector<int>& arr, int difference) { unordered_map<int,int> mp; int ans=0; for(int c:arr){ mp[c]=mp[c-difference]+1; ans=max(an原创 2021-11-05 09:42:24 · 71 阅读 · 0 评论 -
407. 接雨水 II
思考:根据木桶原理,能盛的水与木桶最外围最短的板子有关,也就是说最短的板子的四周能盛的水就是最短板子的高减去它四周的高度,那么我们用一个容器装下木桶最外围的板子的高度和位置,然后一次次找到最短的板子,计算他四周能盛的水,计算完成的地方就变成了新的外围解决:利用一个priority_queue的最小堆模式,存pair,pair的第一个元素是板子的高度,第二个元素是它的大小,然后用一个二维vector存bool值,代表这个位置是不是最外围,然后循环拿出priority_queue的top并pop掉,查找他上.原创 2021-11-03 19:43:28 · 55 阅读 · 0 评论 -
335. 路径交叉
不交叉的卷法只有三种第一种只要保持dist[i]>dist[i-2],就不会交叉第二种只要保持dist[i]<dist[i-2],就不会交叉第三种也即dist[i] > dist[i-2] - dist[i-4]时,在i-1处剪掉i-3的部分,就变成第二种情况了此处要说明的是,如果第三种情况的dist[i] < dist[i-2] - dist[i-4],也就是说卷到左边那个卷下面的缝隙里面了的话,就不需要考虑变成第三种情况了,直接从i-1开始就是第二种情况了,.原创 2021-10-29 21:38:22 · 43 阅读 · 0 评论 -
301. 删除无效的括号
s中的括号数肯定是一种大于另一种的,而且删除的数量肯定是固定的,所以直接广度优先,遇到一个删一个,然后加入新容器等待下一次删除即可,删除操作次数达到需要删除的数量的时候,肯定就有解了class Solution {public: vector<string> removeInvalidParentheses(string s) { vector<string> ans; unordered_set<string> curset.原创 2021-10-27 20:11:36 · 87 阅读 · 0 评论 -
496. 下一个更大元素 I
遇到求下一个更大函数的时候就用单调栈,要节省空间就直接暴力搜索原创 2021-10-26 09:23:21 · 36 阅读 · 0 评论 -
240. 搜索二维矩阵 II
从右上角开始查找,如果当前值小于目标值则说明行小了,行+1;如果当前值大于目标值则说明列大了,列-1原创 2021-10-25 19:56:36 · 44 阅读 · 0 评论 -
1074. 元素和为目标值的子矩阵数量
1074. 元素和为目标值的子矩阵数量题目:给出 n*m 矩阵 matrix 和目标数 target ,求 matrix 中元素和为 target 的子矩阵数量思考:因为需要考虑全部子矩阵,所以之前做过的题目那种以左上角为定点,用 dp[ i ][ j ]=dp[ i-1 ][ j ]+dp[ i ][ j-1 ]-dp[ i-1 ][ j -1 ]+num[ i ][ j ] 的状态规划做法无法实现,于是使用 “前缀值+哈希表” 的方式解决解决:从第 0 行开始枚举,枚举位置为头,最后一行为尾,创建原创 2021-05-29 10:22:16 · 131 阅读 · 0 评论 -
523. 连续的子数组和
523. 连续的子数组和题目:思考:解决这道题主要需要知道“同余”,即如果 (num[3]+num[4])%k=0 那么 S[2]%k=S[5]%k解决:利用哈希表储存各个余数出现的位置,若同一余数出现两次,则比较他们位置的距离,若大于等于2,则返回true...原创 2021-06-02 09:21:06 · 35 阅读 · 0 评论 -
每日力扣1
这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mark原创 2021-05-28 09:37:17 · 46 阅读 · 0 评论 -
211. 添加与搜索单词 - 数据结构设计
思想:字典树我的代码struct TreeNodes{ vector<TreeNodes *>node; bool isEnd; TreeNodes(){ this->node=vector<TreeNodes *>(26,nullptr); this->isEnd=false; }};void insert(TreeNodes *root,const string &words){原创 2021-10-19 21:22:45 · 47 阅读 · 0 评论