class Solution {
public:
int longestCommonSubsequence(string text1, string text2)
{
int m = text1.size();
int n = text2.size();
int ans = 0;
vector<vector<int>> dp(m+1, vector<int>(n+1));
for (int i=1; i<=m; i++)
for (int j=1; j<=n; j++)
{
if (text1[i-1]==text2[j-1]) dp[i][j] = dp[i-1][j-1]+1;
else
{
dp[i][j] = max(dp[i-1][j], dp[i][j-1]);
}
// ans = max(ans, dp[i][j]);
}
return dp[m][n];
}
};
class Solution {
public:
int maxSubArray(vector<int>& nums)
{
int m = nums.size();
vector<int> dp(m);
dp[0] = nums[0];
int ans = dp[0];
for (int i=1; i<m; i++)
{
dp[i] = max(nums[i], dp[i-1]+nums[i]);
ans = max(ans, dp[i]);
}
return ans;
}
};