2021-08-04 13:45
门头沟学院 前端工程师 0 点赞 评论 收藏
分享
小宋啊:你好,深度优先搜索非递归解决的方法,我把 root.right.val += root.val 改成sum -= root.val,累加改成累减,其他代码不变,最后还是来到叶子且sum==node.val,为啥不对呢?您有时间的时候麻烦看看~
0 点赞 评论 收藏
分享
牛客66419930...:不确定源代码是什么版本的c++ 直接拷过来没法用 所以我改了一下下 class Solution { public: /** * longest common substring * @param str1 string字符串 the string * @param str2 string字符串 the string * @return string字符串 */ string LCS(string str1, string str2) { // write code here int maxLenth = 0;//记录最长公共子串的长度 //记录最长公共子串最后一个元素在字符串str1中的位置 int maxLastIndex = 0; int *dp = new int[str2.length() + 1]; for (int i = 0; i < str1.length(); i++) { //注意这里是倒叙 for (int j = str2.length() - 1; j >= 0; j--) { //递推公式,两个字符相等的情况 if (str1.at(i) == str2.at(j)) { dp[j + 1] = dp[j] + 1; //如果遇到了更长的子串,要更新,记录最长子串的长度, //以及最长子串最后一个元素的位置 if (dp[j + 1] > maxLenth) { maxLenth = dp[j + 1]; maxLastIndex = i + 1; } } else { //递推公式,两个字符不相等的情况 dp[j + 1] = 0; } } } //最字符串进行截取,substring(a,b)中a和b分别表示截取的开始和结束位置 return str1.substr(maxLastIndex - maxLenth, maxLenth); } };
0 点赞 评论 收藏
分享
创作者周榜
更多
关注他的用户也关注了: