タイトル説明
HZは時折、それらの非コンピュータ科学の学生を点滅するために、いくつかの専門的な問題を取得します。テストグループが今日終了します後、彼はアップ話し:旧一次元パターン認識では、ベクトルは正の整数、問題の解決策であるときに最大と連続サブベクトルを計算する必要があることが多いです。ベクターは、負の数が含まれている場合は、それを補うだろう横に正の数を負の数が含まれている、と期待できますか?例えば:{6、-3、-2,7、-15,1,2,2}、及び8の最大連続サブベクトル(第3まで、0から始まります)。その最大連続サブ配列にして返し、あなたは彼が住んでだまされてはいけないのだろうか?(サブベクトルの長さは、少なくとも1です)
A.件名分析
主題の上に複雑すぎるので、私は法律になるために彼に尋ねた:、整数配列を入力配列は、ポジティブにもネガティブを持っています。連続的なアレイまたは整数のサブアレイの複数。全てのサブアレイの最大値を求めると。所要時間の複雑さはO(N)です。
要するに、配列はまあ、サブアレイに分割され、このトピックの完全な配列は次のようになります。最大のサブアレイこの配列マイナスがある場合、私はこの配列を見つけるために。例えば、入力配列は{1、-2、3,10、-4,7,2、-5}、及び{3,10サブアレイ、-4,7,2}、そのサブに対する出力の最大18のアレイ。
実践:
II。コードの実装
クラスソリューション { 公共 のint FindGreatestSumOfSubArray(INT []配列) { // 書き込みコードここで壁紙 // ロバスト決意 IF(Array.lengthと== 0 ) 戻り 0 ; //は定数を定義しても操作一定の最大値maxを追加(と)最終的な出力で のint最大=配列[ 0 ]; int型 = 0 ; // をループ するための(INT I = 0 Iは<Array.lengthと; I ++は) { // 入力定配列+>一定の入力を、彼と相まって 場合(配列[I] +> 配列[I]) { A + = 配列[I]; } // そうでない場合、aは彼に等しい 他 { = 配列[I]; } // 最終出力決意は、 IF(> MAX) { 最大 = A; } } 戻りmaxは; } }