标签:nbsp else pytho 规划 代码 form ring python 复杂度
动态规划
空间复杂度O(mn)
第一次提交
class Solution {
public:
int minimumDeleteSum(string s1, string s2) {
//cout<<"s1: "<<s1<<endl;
//cout<<"s2: "<<s2<<endl;
int m=s1.size();
int n=s2.size();
vector<vector<int>> dp(m+1,vector<int>(n+1,0));
for(int i=0;i<m;i++){
dp[i+1][0]=dp[i][0]+s1[i];
for(int j=0;j<n;j++){
dp[0][j+1]=dp[0][j]+s2[j];
if(s1[i]==s2[j])
dp[i+1][j+1]=dp[i][j];
else
dp[i+1][j+1]=min(dp[i][j+1]+s1[i],dp[i+1][j]+s2[j]);
}
}
/*
for(int i=0;i<m+1;++i){
for(int j=0;j<n+1;++j){
cout<<dp[i][j]<<" ";
}
cout<<endl;
}
*/
return dp[m][n];
}
};
动态规划 空间复杂度 min(O(m),O(n))
1 class Solution { 2 public: 3 int minimumDeleteSum(string s1, string s2) { 4 //cout<<"s1: "<<s1<<endl; 5 //cout<<"s2: "<<s2<<endl; 6 //int m=s1.size(); 7 int m=s1.size(); 8 int n=s2.size(); 9 vector<int> dp(n+1,0); 10 for(int j=0;j<n;++j) 11 dp[j+1]=dp[j]+s2[j]; 12 for(int i=0;i<m;++i){ 13 int t1=dp[0]; 14 dp[0]=dp[0]+s1[i]; 15 for(int j=0;j<n;++j){ 16 int t2=dp[j+1]; 17 if(s1[i]==s2[j]) 18 dp[j+1]=t1; 19 else 20 dp[j+1]=min(dp[j+1]+s1[i],dp[j]+s2[j]); 21 t1=t2; 22 } 23 } 24 return dp[n]; 25 } 26 };
python 代码
class Solution(object): def minimumDeleteSum(self, s1, s2): """ :type s1: str :type s2: str :rtype: int """ m=len(s1) n=len(s2) dp=[[0 for _ in xrange(len(s2)+1)] for _ in xrange(len(s1)+1)] for j in xrange(1,len(s2)+1): dp[0][j]=dp[0][j-1]+ord(s2[j-1]) for i in xrange(1,len(s1)+1): dp[i][0]=dp[i-1][0]+ord(s1[i-1]) #print "dp[{}][0]: {}".format(i,dp[i][0]) for j in xrange(1,len(s2)+1): if s1[i-1]==s2[j-1]: dp[i][j]=dp[i-1][j-1] else: dp[i][j]=min(dp[i-1][j]+ord(s1[i-1]),dp[i][j-1]+ord(s2[j-1])) #print dp return dp[-1][-1]
712. Minimum ASCII Delete Sum for Two Strings
标签:nbsp else pytho 规划 代码 form ring python 复杂度
原文地址:https://www.cnblogs.com/learning-c/p/9266082.html