国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

代碼隨想錄第53天|● 1143.最長公共子序列 ● 1035.不相交的線 ● 53. 最大子序和 動態(tài)規(guī)劃

這篇具有很好參考價值的文章主要介紹了代碼隨想錄第53天|● 1143.最長公共子序列 ● 1035.不相交的線 ● 53. 最大子序和 動態(tài)規(guī)劃。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

● 1143.最長公共子序列

代碼隨想錄第53天|● 1143.最長公共子序列 ● 1035.不相交的線 ● 53. 最大子序和 動態(tài)規(guī)劃,動態(tài)規(guī)劃,算法

思路:

dp[i][j]:長度為[0, i - 1]的字符串text1與長度為[0, j - 1]的字符串text2的最長公共子序列為dp[i][j]代碼隨想錄第53天|● 1143.最長公共子序列 ● 1035.不相交的線 ● 53. 最大子序和 動態(tài)規(guī)劃,動態(tài)規(guī)劃,算法
代碼隨想錄第53天|● 1143.最長公共子序列 ● 1035.不相交的線 ● 53. 最大子序和 動態(tài)規(guī)劃,動態(tài)規(guī)劃,算法
代碼隨想錄第53天|● 1143.最長公共子序列 ● 1035.不相交的線 ● 53. 最大子序和 動態(tài)規(guī)劃,動態(tài)規(guī)劃,算法

代碼一:dp二維數(shù)組

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()];

    }
}

代碼二:滾動數(shù)組

通過pre記錄前一個dp[j-1] 循環(huán)中記錄cur為dp[i],循環(huán)結束后再更新pre=cur。

class Solution {
    public int longestCommonSubsequence(String text1, String text2) {
        int n1 = text1.length();
        int n2 = text2.length();

        // 多從二維dp數(shù)組過程分析  
        // 關鍵在于  如果記錄  dp[i - 1][j - 1]
        // 因為 dp[i - 1][j - 1]  <!=>  dp[j - 1]  <=>  dp[i][j - 1]
        int [] dp = new int[n2 + 1];

        for(int i = 1; i <= n1; i++){

            // 這里pre相當于 dp[i - 1][j - 1]
            int pre = dp[0];
            for(int j = 1; j <= n2; j++){

                //用于給pre賦值
                int cur = dp[j];
                if(text1.charAt(i - 1) == text2.charAt(j - 1)){
                    //這里pre相當于dp[i - 1][j - 1]   千萬不能用dp[j - 1] !!
                    dp[j] = pre + 1;
                } else{
                    // dp[j]     相當于   dp[i - 1][j]
                    // dp[j - 1] 相當于   dp[i][j - 1]
                    dp[j] = Math.max(dp[j], dp[j - 1]);
                }

                //更新dp[i - 1][j - 1], 為下次使用做準備
                pre = cur;
            }
        }

        return dp[n2];
    }
}

● 1035.不相交的線

代碼隨想錄第53天|● 1143.最長公共子序列 ● 1035.不相交的線 ● 53. 最大子序和 動態(tài)規(guī)劃,動態(tài)規(guī)劃,算法

思路:

和最長公共子序列相同

代碼:(滾動數(shù)組)

注意pre和cur放置的位置

class Solution {
    public int maxUncrossedLines(int[] nums1, int[] nums2) {
        int[]dp=new int[nums2.length+1];
        for(int i=1;i<=nums1.length;i++){
            int pre=dp[0];
            for(int j=1;j<=nums2.length;j++){
                int cur=dp[j];
                if(nums1[i-1]==nums2[j-1]){
                    dp[j]=pre+1;
                }else{
                    dp[j]=Math.max(dp[j],dp[j-1]);
                }
                pre=cur;
            }
        }
        return dp[nums2.length];
    }
}

● 53. 最大子序和 動態(tài)規(guī)劃

代碼隨想錄第53天|● 1143.最長公共子序列 ● 1035.不相交的線 ● 53. 最大子序和 動態(tài)規(guī)劃,動態(tài)規(guī)劃,算法

思路

dp[i]:包括下標i(以nums[i]為結尾)的最大連續(xù)子序列和為dp[i]。
代碼隨想錄第53天|● 1143.最長公共子序列 ● 1035.不相交的線 ● 53. 最大子序和 動態(tài)規(guī)劃,動態(tài)規(guī)劃,算法文章來源地址http://www.zghlxwxcb.cn/news/detail-837297.html

代碼:

public static 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 < nums.length; i++) {
            dp[i] = Math.max(dp[i - 1] + nums[i], nums[i]);
            res = res > dp[i] ? res : dp[i];
        }
        return res;
    }

代碼二:單一元素

class Solution {
    public int maxSubArray(int[] nums) {
        // int[] dp=new int[nums.length];
        // dp[0]=nums[0];
        int num = nums[0];
        int res=nums[0];
        for(int i=1;i<nums.length;i++){
            num=Math.max(nums[i],num+nums[i]);
            res=Math.max(num,res);
        }
        return res;
    }
}

到了這里,關于代碼隨想錄第53天|● 1143.最長公共子序列 ● 1035.不相交的線 ● 53. 最大子序和 動態(tài)規(guī)劃的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 1143.最長公共子序列 1035.不相交的線 53.最大子序和動態(tài)規(guī)劃

    1143.最長公共子序列 1035.不相交的線 53.最大子序和動態(tài)規(guī)劃

    力扣題目鏈接(opens new window) 給定兩個字符串 text1 和 text2,返回這兩個字符串的最長公共子序列的長度。 一個字符串的 子序列 是指這樣一個新的字符串:它是由原字符串在不改變字符的相對順序的情況下刪除某些字符(也可以不刪除任何字符)后組成的新字符串。 例如,“

    2024年01月20日
    瀏覽(59)
  • LeetCode刷題 | 1143. 最長公共子序列、1035. 不相交的線、53. 最大子數(shù)組和

    LeetCode刷題 | 1143. 最長公共子序列、1035. 不相交的線、53. 最大子數(shù)組和

    給定兩個字符串? text1 ?和? text2 ,返回這兩個字符串的最長? 公共子序列 ?的長度。如果不存在? 公共子序列 ?,返回? 0 ?。 一個字符串的? 子序列 ? 是指這樣一個新的字符串:它是由原字符串在不改變字符的相對順序的情況下刪除某些字符(也可以不刪除任何字符)后

    2024年02月12日
    瀏覽(25)
  • 算法 DAY52 動態(tài)規(guī)劃10 1143.最長公共子序列 1035.不相交的線 53. 最大子數(shù)組和

    本題和動態(tài)規(guī)劃:718. 最長重復子數(shù)組 (opens new window)區(qū)別在于這里不要求是連續(xù)的了 1、dp數(shù)組 dp[i][j]:長度為[0, i - 1]的字符串text1與長度為[0, j - 1]的字符串text2的最長公共子序列為dp[i][j] 2、遞推公式 因為不強調是連續(xù)的,當前dp[i][j] 就有三種路徑可以選:dp[i-1][j] dp[i][j-1]

    2024年02月03日
    瀏覽(34)
  • 代碼隨想錄算法訓練營|第五十五天|1143.最長公共子序列、1035.不相交的線、53. 最大子序和。刷題心得(c++)

    目錄 讀題 1143.最長公共子序列 自己看到題目的第一想法 看完代碼隨想錄之后的想法 1035.不相交的線 自己看到題目的第一想法 53. 最大子序和 看完代碼隨想錄之后的想法 1143.最長公共子序列 - 實作 思路 Code 1035.不相交的線 - 實作 思路 Code 53.?最大子序和 - 實作 思路 Code 總結

    2024年02月06日
    瀏覽(22)
  • 【代碼隨想錄day21】二叉樹的最近公共祖先

    【代碼隨想錄day21】二叉樹的最近公共祖先

    給定一個二叉樹, 找到該樹中兩個指定節(jié)點的最近公共祖先。 百度百科中最近公共祖先的定義為:“對于有根樹 T 的兩個節(jié)點 p、q,最近公共祖先表示為一個節(jié)點 x,滿足 x 是 p、q 的祖先且 x 的深度盡可能大(一個節(jié)點也可以是它自己的祖先)?!?這題的難點在于: 如何建

    2024年02月15日
    瀏覽(25)
  • 代碼隨想錄 動態(tài)規(guī)劃-子序列問題-子序列(連續(xù))

    代碼隨想錄 動態(tài)規(guī)劃-子序列問題-子序列(連續(xù))

    目錄 674.最長連續(xù)遞增序列? 718.最長重復子數(shù)組 53.最大子數(shù)組和? 674. 最長連續(xù)遞增序列 簡單 給定一個未經(jīng)排序的整數(shù)數(shù)組,找到最長且 ?連續(xù)遞增的子序列 ,并返回該序列的長度。 連續(xù)遞增的子序列 ?可以由兩個下標? l ?和? r ( l r )確定,如果對于每個? l = i r ,都

    2024年04月09日
    瀏覽(20)
  • 代碼隨想錄 動態(tài)規(guī)劃 判斷子序列,不同的子序列

    392. 判斷子序列 給定字符串? s ?和? t ?,判斷? s ?是否為? t ?的子序列。 字符串的一個子序列是原始字符串刪除一些(也可以不刪除)字符而不改變剩余字符相對位置形成的新字符串。(例如, \\\"ace\\\" 是 \\\"abcde\\\" 的一個子序列,而 \\\"aec\\\" 不是)。 思路: 1. 使用哈希統(tǒng)計兩個序

    2024年02月07日
    瀏覽(25)
  • 【Day53】代碼隨想錄之動態(tài)規(guī)劃part10——買賣股票的最佳時機、買賣股票的最佳時機II

    【Day53】代碼隨想錄之動態(tài)規(guī)劃part10——買賣股票的最佳時機、買賣股票的最佳時機II

    昨天已經(jīng)把打家劫舍的問題解決了,最后一個題目涉及到樹形dp比較難(等到二刷的時候再重點看下),今天的任務是解決股票問題。 今日任務: 121.買賣股票的最佳時機 122.買賣股票的最佳時機II Leetcode題目:【121.買賣股票的最佳時機】 因為此題中買賣股票只能買賣一次。

    2024年03月15日
    瀏覽(33)
  • 代碼隨想錄 - Day34 - 回溯:遞增子序列+排列問題

    如果有相等的整數(shù)也算遞增序列 遞增子序列中 至少有兩個元素 (遍歷的時候不用遍歷 nums 中最后一個元素) 題目說了數(shù)值范圍,所以還可以用哈希表去重,速度比 set() 快很多。 但是,個人覺得沒必要,因為放在實際情況中一般不會給數(shù)值范圍。 全排列,即 [1,2] 和 [2,1] 算作

    2024年02月09日
    瀏覽(97)
  • 【代碼隨想錄刷題記錄】 392.判斷子序列 、 115.不同的子序列

    1、題目 給定字符串 s 和 t ,判斷 s 是否為 t 的子序列。 字符串的一個子序列是原始字符串刪除一些(也可以不刪除)字符而不改變剩余字符相對位置形成的新字符串。(例如,\\\"ace\\\"是\\\"abcde\\\"的一個子序列,而\\\"aec\\\"不是)。 題目鏈接:https://leetcode.cn/problems/is-subsequence/ 2、代碼

    2024年02月16日
    瀏覽(19)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包