头图

No.1 数组串联
解题思路

一个 for 循环解决。

代码展示

No.2 长度为 3 的不同回文子序列

解题思路

最多有 26 * 26 种长度为 3 的回文子序列,依次判断每一种子序列是否存在即可。

代码展示

No.3 用三种不同颜色为网格涂色

解题思路

状压 DP,将每一列压缩成一个 0 ~ 242 之间的数字即可(相当于 3 进制的表示)。

定义状态 dpi 表示第 i 列的涂色情况为 j 时,前 i 列的方案数。

状态转移 dpi = SUM(dpi - 1) if valid(j) and valid(k) and valid(j, k)

方程中 valid(j) 表示 j 本身是一个合法的涂色(一列中没有相邻的相同颜色),valid(j, k) 表示涂色 j 和 k 作为相邻的列时合法。

代码展示

No.4 合并多棵二叉搜索树

解题思路

DFS 即可,详见注释。

代码展示


上岸算法
1 声望1 粉丝