Day 53|1143.最长公共子序列 | 1035.不相交的线 |53. 最大子序和 动态规划

● 1143.最长公共子序列

class Solution {
    public int longestCommonSubsequence(String text1, String text2) {
    int[][] dp = new int[text1.length()+1][text2.length()+1];
    for(int i = 1;i<=text1.length();i++){
        char char1 = text1.charAt(i-1);
        for(int j = 1;j<=text2.length();j++){
        char char2 = text2.charAt(j-1);
        if(char1==char2){
            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[text1.length()][text2.length()];
    }
}

● 1035.不相交的线

class Solution {
    public int maxUncrossedLines(int[] nums1, int[] nums2) {
    int[][] dp  = new int[nums1.length+1][nums2.length+1];
    for(int i  =1 ;i<=nums1.length;i++){
        int num1 = nums1[i-1];
        for(int j = 1;j<=nums2.length;j++){
            int num2 = nums2[j-1];
            if(num1 == num2){
            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[nums1.length][nums2.length];
    }
}

● 53. 最大子序和 动态规划

class Solution {
    public int maxSubArray(int[] nums) {
   if(nums.length == 0){
       return 0;
   }
​
   int res = nums[0];
   int[] dp = new int[nums.length];
   dp[0] = nums[0];
   for(int i = 1;i 
  

你可能感兴趣的:(leetcode,算法,职场和发展)