leetcode随便刷刷
随便刷刷leetcode
10 正则表达式匹配
动态规划
\(f_{i,j}\)表示当前匹配到\(i,j\)是否成功,注意边界情况和空串。
30 串联所有单词的子串
\(hash\)+滑动窗口
32 最长有效括号
正反各做一遍
42 接雨水
线段树维护区间最大值位置、区间\(Sum\),复杂度\(nlogn\)
有更优秀的单调栈和\(dp\)做法可以做到\(O(n)\)
正反各做一遍也是\(O(n)\)
41 缺失的第一个正数
桶排
87 扰乱字符串
比较好的\(dp\)题(其实是\(easy\)
考虑每次交换两个子串之后子串之间互不影响
\(f_{i,j,k}\)表示\(s\)串的\(i,j\)区间和\(t\)串\(k\)开头区间匹配是否成功。
转移\(f_{i,j,k} =(f_{i,k+j-m,m} \ and \ f_{k+j-m+1,j,k}) \ or \ (f_{i,m-k+i-1,k}\ and\ f_{m-k+i,j,m})\)
乘法原理可求方案数(扩展),复杂度\(O(n^4)\)
240周赛
5750 人口最多的年份
模拟题。
5751 下标对中的最大距离
二分。
5752 子数组最小乘积的最大值
线段树维护最小值位置。
5753 有向图中最大颜色值
\(dag\)上\(dp\)