伴你如风、护你如影|

xzh-yyds

园龄:3年9个月粉丝:0关注:2

leetcode132-分割回文串 II
摘要: 分割回文串 II 双重dp 首先需要用dp去记录s中回文子串的信息,找出所有的回文子串,方法如上一题。 然后对子串进行拆分,拆分的时候需要用到dp。 对于下标为i这一点,需要去遍历[0, i]这些部分,找出所有以i点结束的回文子串,计算相应的拆分数量,取较小值。 由于最后返回的是分割数量而不是拆分后
18
0
0
leetcode131-分割回文串
摘要: 分割回文串 dp+回溯 先通过dp记录子字符串是否为回文串,dp[i][j]表示从i开始到j结束的字符串是否为回文串。注意,i的遍历要从后往前。 然后从0开始进行dfs。在dfs中,找出所有以k为起始字符的回文子串,然后加入路径中,继续进行dfs,直到k == n为止 class Solution
20
0
0
leetcode91-解码方法
摘要: 解码方法 dp 如果当前位置的字符串不等于0,则表明这个字符可以被解码成新字符,dp[i] += dp[i-1] 如果上一个位置的字符串等于1或者2并且与当前字符拼接的数字小于等于26,则表明本字符可以是上一个字符遗留下来的,dp[i] += dp[i-2] class Solution { pub
25
0
0
leetcode87-扰乱字符串
摘要: 扰乱字符串 dp dp需要记录s1和s2的起始位置和长度,所以是一个三维dp。 dp[i1][i2][len]表示s1从i1位置开始,s2从i2位置开始,长度为len的两个字符串是否和谐。分为以下几种情况: 如果两个字符串相等,返回true 如果字符串不相等,那么从1到len-1的范围内,找出分割点
25
0
0
leetcode85-最大矩形
摘要: 最大矩形 dp+单调栈 对每一层维护本列中形成的最高值height,然后对每一层分别计算最大的矩形。 计算每一层最大矩形的时候,先用单调栈记录小于当前位置的左下标和右下标,矩形面积就是(right[i]-left[i]-1) * height[i] class Solution { public i
20
0
0
leetcode712-两个字符串的最小ASCII删除和
摘要: 两个字符串的最小ASCII删除和 dp dp[i][j]代表s1[0:i]和s2[0:j]两个字符串的最小删除值。转移方程如下: 如果i == 0且j == 0,则dp[i][j] = 0 如果i == 0或j == 0,则dp[i][j] = dp[i-1][j]+s1.charAt(i-1)或d
30
0
0
leetcode1175-质数排列
摘要: 质数排列 分别找出质数和合数的数量,将两者的阶乘相乘即可 class Solution { public int numPrimeArrangements(int n) { int cnt = 0; for(int i = 2; i <= n; i++){ boolean flag = true;
20
0
0
leetcode690-员工的重要性
摘要: 员工的重要性 dfs class Solution { Map<Integer, Employee> map = new HashMap<>(); public int getImportance(List<Employee> employees, int id) { for(Employee e
16
0
0
leetcode1033-移动石子直到连续
摘要: 移动石子直到连续 分类讨论 class Solution { public int[] numMovesStones(int a, int b, int c) { if(a > b){int t = a; a = b; b = t;} if(a > c){int t = a; a = c; c =
12
0
0
leetcode1656-设计有序流
摘要: 设计有序流 数组遍历 维护一个String数组和一个index下标,如果insert插入的idKey-1==index,则将后续字符串依次输出直到遇到null或index==n为止 class OrderedStream { String arr[]; int index = 0; public O
19
0
0
点击右上角即可分享
微信分享提示
深色
回顶
展开