「ダブルポインタ」、我々の要求を満たすために、両手の相対位置を調整し、条件の決意によって定義された2つのポインタを使用して、次々と言っ窓をスライドすることは私たちの日常です。
話は安いです、私のコードを表示します。のは、実用的な運動セッションに直接アクセスしてみましょう。"
タイトル説明
暁明は、彼が計算するのに必要と9〜16は、彼はすぐに正しい答えは100で書いた、数学の宿題をやっていた、数学、1日の非常に好きです。彼はこれに満足していなかった。しかし、彼は(少なくとも二つの数字を含む)100がどのように多くの連続した正数列の種類疑問に思いました。18,19,20,21,22:長い前に、彼は連続した正の数と100のシーケンスの別のセットを得ました。今、あなたの質問は、あなたもすぐにすべての正と連続シーケンスS?幸運を識別することができます!
出力説明:
すべての正の出力と連続数列S. 開始昇順に従ってシーケンス番号との間の昇順で昇順
私たちは、最初の小さなアイデアを分析し、それが継続的に続く一連Sのすべての私達の正シリーズ、2つの定義された条件があることに注意してください、正の第1の連続出力を必要とします。私たちがあると考えることができ、連続正の列の最小数は何ですか?1と2はい。第二に、彼はその後、我々は上-1を得ることができ、構築するために始めた小さなから大量にシーケンスを尋ねた列の数を蓄積します。
以下は、特定の問題解決のアイデアです
- 私たちの戻り値として、二重のArrayList配列の結果を作成します。
- phigh>は、ループ終了条件は、当社で耕しながら2つのスライダーの初期値は、= 2 = 1 phighを耕します
- 加算式(phigh +プラウ)*(phigh - プラウ+ 1)/ 2式の判定方法のパラメータの結果とケースのサイズ
- 新しいリスト、追加phigh値に全体プラウ、その後、加算結果の一覧に等しいです
- 数よりも少ないが、我々はphighことを十分に大きくないです++
- 我々はあまりにもplow--数よりも大きいです
以上の工程により、コードを書くのは難しいことではありません。
公共のArrayList <のArrayList <整数>> FindContinuousSequence(int型の合計){ のArrayList <のArrayList <整数>>結果= 新規のArrayList <> (); INTプラウ= 1、phigh = 2 。 一方、(phigh> プラウ){ もし、((phigh +プラウ)*(phigh -プラウ+ 1)/ 2 ==の合計){ のArrayList <整数>リスト= 新規のArrayList <> (); 用(int型 ; I <= phigh I ++は、I =プラウを{) list.add(I)。 } result.add(リスト); 耕す ++ ; } そう であれば((phigh +プラウ)*(phigh -プラウ+ 1)/ 2 < 合計){ phigh ++ 。 } 他{ プラウ ++ 。 } } 戻り値の結果; }
この記事はあなたを助けるために期待しています!!