第一题
题目
思路
贪心: 双指针,放一个小的、放一个大的、放一个小的、放一个大的…
代码
第二题
题目:
思路
模拟: 利用
set
的去重 + 排序
,将两个集合元素放入set
,遍历set
输出;
代码
第三题
题目:
思路
状态表示:
dp[i][j]:
表示以(i, j)
内的最长回文子序列长度
状态转移方程:
- 当
i == j
时,长度为1
; - 当
i < j
时,s[i] == s[j]:dp[i][j] = dp[i + 1][j - 1];
s[i] != s[j]:dp[i][j] = max(dp[i + 1][j], dp[i][j - 1]);
填表顺序: 填(i, j)
位置时,需要i + 1 和 j - 1
位置,所以从下往上,从左往右;
返回值:dp[0][n - 1]