02 2021 档案

摘要:困难题,先想着DP扫描,但是会爆栈; 主体思想仍然采用滑动窗口来进行; 但是对于该题目,有一个比较新的点,要利用脑经急转弯思想把问题转换一下; 对于正好为K个不同元素组成的最长字符串可以转换为: 最多由K个不同元素组成的字符串-最多由K-1个不同元素组成的字符串; (这样可以有效的降低复杂度,使得单 阅读全文
posted @ 2021-02-09 20:52 暮云林凌 阅读(124) 评论(0) 推荐(0)
摘要:DP问题设计两个问题: 1.DP数组的抉择; 2.DP中状态转换方程; 【湍流DP问题】 【子序列DP问题】 阅读全文
posted @ 2021-02-09 00:10 暮云林凌 阅读(82) 评论(0) 推荐(0)
摘要:哎。。。滑动窗口的题目,自己猜到了要用滑动窗口,但是没做出来; 这道题目用滑动窗口和DP都可以; 滑动窗口: 如果采用滑动窗口的记录前一位标志位,right和right-1比较,会丢失一部分序列; 例如:9,4,2,10,7,8; 湍流数列应该为:4,2,10,7,8; 但是如果采用我的滑动窗口比较 阅读全文
posted @ 2021-02-08 23:34 暮云林凌 阅读(98) 评论(0) 推荐(0)
摘要:贪心问题,要主要贪心的是什么; 【求是否存在更改一次的递增序列】 阅读全文
posted @ 2021-02-07 17:30 暮云林凌 阅读(55) 评论(0) 推荐(0)
摘要:一道简单题把自己考成了傻逼。。。 贪心问题,随便加条件也只是个贪心问题,重要的是贪心什么; 这道题需要前瞻后顾,实际问题存在两种可能; 对于1,4,2,5; 对于该序列的调整无非就是两种情况: 1,2,2,5; 1,4,4,5; 可以看到两种情况都可以满足; 而对于: 1,4,2,3; 有两种调整方 阅读全文
posted @ 2021-02-07 17:29 暮云林凌 阅读(60) 评论(0) 推荐(0)
摘要:可以通过滑动窗口转化为一个最长序列求和问题,旨在在指定值下,找到总和小于该值的最长序列; 如果使用dp动态规划,但是会超时; class Solution { public: vector<vector<int>>dp; int equalSubstring(string s, string t, 阅读全文
posted @ 2021-02-06 17:34 暮云林凌 阅读(117) 评论(0) 推荐(0)
摘要:滑动窗口经典例题,从首尾选择元素; 之前自己的想法是直接对比首尾元素,直接求和就行,但是存在误区; 例如以下序列: 1,2,100,99,5,1; 如果选取三个数字,会选择1,5,2三个数字,但是应该选取1,5,99; 当然可以采用递归dfs,但是会存在爆栈问题; 当然也可以采用记忆法剪枝,但是还是 阅读全文
posted @ 2021-02-06 16:51 暮云林凌 阅读(56) 评论(0) 推荐(0)
摘要:总体来说就是递归的树形求解,DFS的一种; 【回溯分割回文子串,可用dp辅助】 阅读全文
posted @ 2021-02-04 17:34 暮云林凌 阅读(50) 评论(0) 推荐(0)
摘要:之前想用回溯递归树怕爆栈,没想到真的可以。。。。 主体思想还是利用枚举当前前缀子串进行判定,如果是回文子串则进行后缀的下一次递归判定,如果不是回文子串,放弃当前枚举前缀,重新选取一个前缀; 如果采用dp进行回文子串的事先判定可能更快一点; 采用单纯回溯判定: class Solution { pub 阅读全文
posted @ 2021-02-04 17:33 暮云林凌 阅读(50) 评论(0) 推荐(0)
摘要:滑动窗口月简单题,没什么好说的,标记遍历对比即可; class Solution { public: double findMaxAverage(vector<int>& nums, int k) { double maxn = 0; int now = 0; for (int i = 0; i < 阅读全文
posted @ 2021-02-04 16:13 暮云林凌 阅读(41) 评论(0) 推荐(0)
摘要:滑动窗口月的Hard题,目前有两种解决的主流方案: 1.使用两个堆,一个大顶一个小顶,来计算平均值,C++使用的是priority_queue,即两个优先队列; 2.使用可自己调节的平衡二叉树,把时间和复杂度控制一定范围内,C++给出的是multiset; 针对于维护两个堆的思想: 建立两个堆,分别 阅读全文
posted @ 2021-02-03 16:59 暮云林凌 阅读(123) 评论(0) 推荐(0)
摘要:做一下滑动窗口的总结问题,后续遇到题目会更新在此篇中; 滑动窗口本质上就是通过维护left和right两个指针,进行子序列的判定,通过不同的判定条件来决定left和right的右移; 在字符串问题中见的比较多; 例如,对于最长重复字符串的解决: 虽然该问题可以通过dp解决,但是还可以解决dp不能解决 阅读全文
posted @ 2021-02-03 02:43 暮云林凌 阅读(83) 评论(0) 推荐(0)
摘要:双指针的另一用法,用于解决3sum问题; 时间复杂度位O(n2),有点高; 主题思想: 先进行排序,以减去相同元素的不同组合情况; 设立第一个指针,从前到后遍历; 对于后续区间进行左右两个指针向中间双向遍历,加和三个元素; 乍一看像是三次方复杂度,其实除去第一层,剩下的是On复杂度; class S 阅读全文
posted @ 2021-02-03 01:46 暮云林凌 阅读(38) 评论(0) 推荐(0)