最初の週のトーナメント、それの10時45考えるとLeetcode。
ゲームリンク:https://leetcode.com/contest/weekly-contest-141/
前の二つは、論理的な質問は比較的簡単ですですが、C ++の構文で、遅すぎる質問を読んで、常に間違っている、に精通していません。
直接ステップの数を記録する第三のチャネル1091のBFSは、現在の近隣の位置は、アクセスまたは更新されたステップの数を、キューに入れられていません。いいえ任意のスキルをBFSません。読むか、長い時間遅延問題を、理解していません。
4番目の方法は、ハード難しい質問です。書面による説明をご覧ください。
トピックリンク:1092最短共通Supersequence
二つの文字列STR1、STR2、文字列sを求めて、STR1とstr2秒の配列であり、sが最小の長さが必要です。
アイデア:
まず、LCSを見つけ、その後、2つの文字列を横断し、LCSにおける現在の文字の場合、ANSに参加し、そうでない場合はLCS文字ではないことを付け加えました。LCSに挿入された、すなわち残りの文字。
コード:
class Solution {
public:
string shortestCommonSupersequence(string str1, string str2) {
int l1 = str1.length();
int l2 = str2.length();
vector<vector<int> > dp(l1+1, vector<int>(l2+1, 0));
dp[0][0] = (str1[0] == str2[0] ? 1 : 0);
for (int i=1; i<=l1; ++i) {
for (int j=1; j<=l2; ++j) {
if (str1[i-1] == str2[j-1]) dp[i][j] = dp[i-1][j-1] + 1;
else dp[i][j] = max(dp[i-1][j], dp[i][j-1]);
}
}
string ans = "";
while(l1 || l2) {
char temp;
if (l1 <= 0) temp = str2[--l2];
else if (l2 <= 0) temp = str1[--l1];
else if (str1[l1-1] == str2[l2-1]) temp = str1[--l1] = str2[--l2];
else temp = (dp[l1][l2] == dp[l1-1][l2] ? str1[--l1] : str2[--l2]);
ans += temp;
}
reverse(ans.begin(), ans.end());
return ans;
}
};
この質問はまだ慌て感じています。
これで週と週シーズンは継続します。
昨夜とドラマを見るために遅くまで起きています。。。。悲劇。
あなたは本当に自分のセルフコントロールをテストすることはできません。アウェイ誘惑から。
今週は一日何をするか分からない...速くrcnnソースにそれを見続けますか。。。。