• leetcode 115不同的子序列


    滚动数组:

    /*****
    下标从1开始
    dp[i][j]:= numbers of subseq of S[1:j] equals T[1:i]
    if(s[j]==t[i]):(那么之后的子串可以是是dp[i-1][j-1](match) 或dp[i][j-1] (not match))
        dp[i][j]=dp[i-1][j-1]+
                    dp[i][j-1];
    if(t[i]!=s[j]):
        dp[i][j]=dp[i][j-1];
    
    初始化:
    dp[0][*]=0
    
    时间:O(n2) 空间O(n2)
    使用滚动数组:
    O(n)空间:
    
    *****/
    
    
    
    class Solution {
    public:
        int numDistinct(string s, string t) {
            int ls=s.length(),lt=t.length();
            vector<long> dp(ls+1,1);
            for(int i=1;i<=lt;i++){
                int pre=dp[0],cur;
                dp[0]=0;
                for(int j=1;j<=ls;j++){
                    cur=dp[j];
                    if(s[j-1]==t[i-1])
                        dp[j]=pre+dp[j-1];
                    else
                        dp[j]=dp[j-1];
                    pre=cur;
                    //cout<<dp[j]<<" ";
                }
                //cout<<endl;
            }
            return dp[ls];
        }
    };
    /*****
    下标从1开始
    dp[i][j]:= numbers of subseq of S[1:j] equals T[1:i]
    if(s[j]==t[i]):(那么之后的子串可以是是dp[i-1][j-1](match) 或dp[i][j-1] (not match))
        dp[i][j]=dp[i-1][j-1]+
                    dp[i][j-1];
    if(t[i]!=s[j]):
        dp[i][j]=dp[i][j-1];
    
    初始化:
    dp[0][*]=0
    
    时间:O(n2) 空间O(n2)
    使用滚动数组:
    O(n)空间:
    
    *****/
    
    
    
    class Solution {
    public:
        int numDistinct(string s, string t) {
            int ls=s.length(),lt=t.length();
            vector<vector<long>> dp(lt+1,vector<long>(ls+1));
            fill(begin(dp[0]),end(dp[0]),1);
            for(int i=1;i<=lt;i++){
                for(int j=1;j<=ls;j++){
                    if(s[j-1]==t[i-1])
                        dp[i][j]=dp[i-1][j-1]+dp[i][j-1];
                    else
                        dp[i][j]=dp[i][j-1];
                    //cout<<dp[i][j]<<" ";
                }
                //cout<<endl;
            }
            return dp[lt][ls];
        }
    };
  • 相关阅读:
    Android开发--Layout元素
    Android开发--RelativeLayout的应用
    group by调优的一些测试
    mysql explain中key_len的计算
    mysql索引长度的一些限制
    order by调优的一些测试
    metadata lock
    JDBC连接数据库
    Java—Map.Entry
    innodb buffer pool
  • 原文地址:https://www.cnblogs.com/joelwang/p/10909056.html
Copyright © 2020-2023  润新知