回溯去重:同层还是同枝
去重条件里那个感叹号,为什么在那儿?
プロンプトをコピーして、どれか一つを選んでください。答えを並べるのではなく、面接官として場面ごとに問い詰めてきます。
アプリを入れたスマートフォンなら、そのままアプリが開きます。WeChat の中では外部アプリを開けないので、先にブラウザで開いてください。
コピーした文章の末尾には採点用の答えが付いています。自分で先に読まないこと —— 自分で導き出せたかどうかが肝心です。
回溯的骨架三行就能背,真正卡人的只有两处:去重和剪枝。
去重有两种形态,天天被搞混 —— 同一个值在这一层用过,和同一个位置在这条路径上用过,是两件事。用 set 对结果去重能得到正确答案,但那些重复分支照样搜了,一点没省。
剪枝那一幕会问一个很多人没想过的问题:剪枝判断本身要花时间,剪不掉的时候它是不是纯开销——以及它到底能不能把指数降下来。
この一本が鍛えるもの
枝刈り
計算量
状態の設計
この本文をリポジトリで見る (ファイルの末尾が手の内です。開けば目に入ります)
この問題はやったか
ログインすると「この問題はやった」を記録できます。次に来たとき、いつやったか分かります。
やった人の手記
まだ誰も書いていません。やり終えたら、そのやり取りで何が出てきたか書いてください —— どの場面で詰まったか、あとで変えた結論はどれか。
使い方
この一群は学習型です:答えられなくなるまで追い込むのではなく、導きます。詰まったらまず「どの層で詰まったか」を聞きます(聞いたことがない/知っているがなぜかは分からない/分かるが書けない)。同じ点で二度導いても通じなければ初めて答えを言い、そのあと自分の言葉で言い直させます。
始め方
- 一本選んで開き、プロンプトをコピーします。
- 新しい空の会話に貼り、何も言わずに最初の質問を待ちます。
- コードより先に手で追うこと —— 途中で止められます。長さ 2 の配列で一歩ずつ追うほうが、型を十回書くより効きます。
途中でいつでも使える四つの合図
跳过すぐ次の場面へ换个说法ここを別の角度でもう一度説明してもらう直说吧答えを全部聞き、そのあと自分で言い直す复盘すぐ締めに飛んで、振り返りカードを出してもらう
三つの落とし穴
- 末尾の手札を先に読まないこと —— あの「よくある思い違い」の欄が、そのまま各問の答えです。
- すぐコードを書かないこと。アルゴリズムでは、コードを書く動作が「実は分かっていない」を最も隠しやすいのです。
- 褒め始めたら「褒めないで」の鉄則を見るように言ってください。導くことは甘やかすことではありません。
解法が思いつかないならまず「状態定義」。境界をよく間違えるなら「二分探索」と「累積和」。問題の形を見抜けないなら「単調スタック」と「尺取り法」。「計算量」の一本は他の何本かの土台なので早めに。
ログインすると手記を書けます。