この質問は、leetcode 53 の元の質問です。いつものように、面接官は、leetcode を開き、leetcode 上で直接質問を行い、合格率チェックを提出するように直接求めます。質問リンク:LeetCode 公式 Web サイト - 世界中のオタクに愛されるテクノロジー成長プラットフォーム
整数配列
nums
を指定して、最大合計を持つ連続部分配列 (部分配列には少なくとも 1 つの要素が含まれます) を見つけて、その最大合計を返してください。サブ配列 は配列の連続した部分です。
例 1:
输入:nums = [-2,1,-3,4,-1,2,1,-5,4] 输出:6 解释:连续子数组 [4,-1,2,1] 的和最大,为 6 。例 2:
输入:nums = [1] 输出:1例 3:
输入:nums = [5,4,-1,7,8] 输出:23s
正直に言うと、この質問はまだ非常に古典的です。質問は短くてシンプルで、多くの解決策があります。さまざまな解決策は簡単なものから難しいものまであり、非常に複雑です。面接の質問に適しています。いつものように、最初に結論について話しましょう。
1: 最初に数分間質問について考え、急いでコードを書き留めないでください。
2: 一般的に、面接での引き裂かれた質問には、より多くの解決策があります。最善の解決策に巻き込まれる必要はありません。暴力が正しい解決策を生み出すことができます。一般的に、面接官の要求を満たすことができます。
3: どうしても思いつかない場合は、話題の変更を申し出ることができます。
4: 面接官は、さまざまなソリューションに対応する時間と空間の複雑さについて質問することがありますが、これには注意が必要です。
このトピック、部分配列クラスのトピックに戻ります。一般に、ブルート フォース、動的プログラミング、スライディング ウィンドウなどの古典的なソリューションがいくつかあります。質問を受けたときは、これらの解決策を直接頼りにして、この書き方を適用できるかどうかを考えることができます。 質問を避けると頭が真っ白になってしまいます。 [この問題グループの多くの友人は、この方法でこの問題を可能な限り軽減できると述べています。]
自分で答えを書こうとしたのですが、ネット上の偉い人の記事を読んで恥ずかしくなりましたので、より良いと思う偉い人の記事をここに載せておきますこの記事は試しも兼ねています誰でも無料で読める記事:
LeetCode 1 つの質問に複数の解法がある | 53. 部分配列の最大和: 5 つの解法完全マニュアル - CSDN Blog