摘要:
括号生成 回溯 回溯过程中记录cnt,cnt是左括号减去右括号的数量。 如果cnt等于0,那么只能用左括号 如果cnt等于n-k,那么说明只有剩余括号位全是右括号才可以将所有左括号匹配,只能用右括号 除此之外,左右括号都可以 class Solution { List<String> list = 阅读全文
posted @ 2022-08-17 21:34
xzh-yyds
阅读(24)
评论(0)
推荐(0)
摘要:
跳跃游戏 II 前向dp 对于一个数i,从0到i-1进行遍历,如果在这个位置能跳跃到i,那么对i的dp值进行更新。 这种方式时间复杂度为O(n^2),效率很低 class Solution { public int jump(int[] nums) { int n = nums.length, dp 阅读全文
posted @ 2022-08-17 19:32
xzh-yyds
阅读(43)
评论(0)
推荐(0)
摘要:
层数最深叶子节点的和 BFS 层序遍历树,返回最后一次计算的结果 class Solution { public int deepestLeavesSum(TreeNode root) { List<TreeNode> list = new ArrayList<>(); int start = 0, 阅读全文
posted @ 2022-08-17 13:47
xzh-yyds
阅读(20)
评论(0)
推荐(0)
摘要:
分割回文串 II 双重dp 首先需要用dp去记录s中回文子串的信息,找出所有的回文子串,方法如上一题。 然后对子串进行拆分,拆分的时候需要用到dp。 对于下标为i这一点,需要去遍历[0, i]这些部分,找出所有以i点结束的回文子串,计算相应的拆分数量,取较小值。 由于最后返回的是分割数量而不是拆分后 阅读全文
posted @ 2022-08-17 13:37
xzh-yyds
阅读(28)
评论(0)
推荐(0)
摘要:
分割回文串 dp+回溯 先通过dp记录子字符串是否为回文串,dp[i][j]表示从i开始到j结束的字符串是否为回文串。注意,i的遍历要从后往前。 然后从0开始进行dfs。在dfs中,找出所有以k为起始字符的回文子串,然后加入路径中,继续进行dfs,直到k == n为止 class Solution 阅读全文
posted @ 2022-08-17 13:21
xzh-yyds
阅读(29)
评论(0)
推荐(0)
摘要:
解码方法 dp 如果当前位置的字符串不等于0,则表明这个字符可以被解码成新字符,dp[i] += dp[i-1] 如果上一个位置的字符串等于1或者2并且与当前字符拼接的数字小于等于26,则表明本字符可以是上一个字符遗留下来的,dp[i] += dp[i-2] class Solution { pub 阅读全文
posted @ 2022-08-17 13:05
xzh-yyds
阅读(42)
评论(0)
推荐(0)
摘要:
扰乱字符串 dp dp需要记录s1和s2的起始位置和长度,所以是一个三维dp。 dp[i1][i2][len]表示s1从i1位置开始,s2从i2位置开始,长度为len的两个字符串是否和谐。分为以下几种情况: 如果两个字符串相等,返回true 如果字符串不相等,那么从1到len-1的范围内,找出分割点 阅读全文
posted @ 2022-08-17 12:03
xzh-yyds
阅读(30)
评论(0)
推荐(0)

浙公网安备 33010602011771号