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\)

posted @ 2021-05-09 12:56  Tyher  阅读(68)  评论(0编辑  收藏  举报