1035. 不相交的线
题目链接:1035. 不相交的线 - 力扣(LeetCode)
题目难度:中等
代码:
class Solution {
public int maxUncrossedLines(int[] nums1, int[] nums2) {
int len1 = nums1.length;
int len2 = nums2.length;
int[][] dp = new int[len1 + 1][len2 + 1];
for (int i = 1; i <= len1; i++) {
for (int j = 1; j <= len2; j++) {
if (nums1[i - 1] == nums2[j - 1]) {
dp[i][j] = dp[i - 1][j - 1] + 1;
} else {
dp[i][j] = Math.max(dp[i - 1][j], dp[i][j - 1]);
}
}
}
return dp[len1][len2];
}
}
53. 最大子数组和
题目链接:53. 最大子数组和 - 力扣(LeetCode)
题目难度:中等
代码:
class Solution {
public int maxSubArray(int[] nums) {
int res=nums[0];
int dp[]=new int[nums.length];
dp[0]=nums[0];
for(int i=1;i<nums.length;i++){
dp[i]=Math.max(dp[i-1]+nums[i],nums[i]);
res=Math.max(res,dp[i]);
}
return res;
}
}
392. 判断子序列
题目链接:392. 判断子序列 - 力扣(LeetCode)
题目难度:简单
代码:
class Solution {
public boolean isSubsequence(String s, String t) {
int dp[]=new int[s.length()+1];
for(int i=0;i<t.length();i++){
for(int j=dp.length-1;j>0;j--){
if(t.charAt(i)==s.charAt(j-1))
dp[j]=dp[j-1]+1;
}
}
return dp[s.length()]==s.length();
}
}
115. 不同的子序列
题目链接:115. 不同的子序列 - 力扣(LeetCode)
题目难度:困难
代码:
class Solution {
public int numDistinct(String s, String t) {
int[][] dp=new int[s.length()+1][t.length()+1];
for(int i=0;i<=s.length();i++){
dp[i][0]=1;
}
for(int i=1;i<=s.length();i++){
for(int j=1;j<=t.length();j++){
if(s.charAt(i-1)==t.charAt(j-1))
dp[i][j]=dp[i-1][j-1]+dp[i-1][j];
else
dp[i][j]=dp[i-1][j];
}
}
return dp[s.length()][t.length()];
}
}