前書き:
これら2つのSO質問(同じクラスからの疑いのない質問)に触発された:隣接要素なしの最大合計のサブ配列の要素javaおよび配列の非隣接要素の最大合計を印刷します。
チャレンジ:
整数のリストが与えられた場合、最高の合計を持つ非隣接要素で構成されるサブシーケンスを出力します。ここにいくつかの例があります:
[1,2,3,-1,-3,2,5]
は、0から始まるインデックスで[1,3,5]
(合計で9
)になります[0,2,6]
。[4,5,4,3]
いずれかをもたらすであろう[4,4]
(の和と8
0ベースのインデックスで)[0,2]
又は[5,3]
(もの和と8
0ベースのインデックスで)[1,3]
。[5,5,10,100,10,5]
は、0ベースのインデックスまたはのいずれかで[5,100,5]
(合計で110
)になります。[0,3,5]
[1,3,5]
上記のこれらの例で最も重要なのは、要素を含むインデックスが少なくとも2つ離れていることです。この例を[5,5,10,100,10,5]
さらに詳しく見ると、非隣接アイテムを含む次の潜在的なサブシーケンスがあります。インデックスがその下にあります。以下の合計で:
[[5],[10],[100],[10],[5],[5],[100,5],[10,5],[10,10],[5,5],[5,10],[5,100],[5,5],[5,10],[5,100],[5,10],[5,100,5],[5,100,5],[5,10,5],[5,10,10]] // non-adjacent subsequences
[[5],[ 4],[ 3],[ 2],[1],[0],[ 3,5],[ 2,5],[ 2, 4],[1,5],[1, 4],[1, 3],[0,5],[0, 4],[0, 3],[0, 2],[1, 3,5],[0, 3,5],[0, 2,5],[0, 2, 4]] // at these 0-based indices
[ 5, 10, 100, 10, 5, 5, 105, 15, 20, 10, 15, 105, 10, 15, 105, 15, 110, 110, 20, 25] // with these sums
^ ^ // and these two maximums
最大合計はなので110
、[5,100,5]
結果として出力します。
チャレンジルール:
- インデックス+値のキーと値のペアを出力できます。だから、代わりに
[5,100,5]
あなたが出力できる[[0,5],[3,100],[5,5]]
か[[1,5],[3,100],[5,5]]
(あるいはその結果[[1,5],[4,100],[6,5]]
/[[2,5],[4,100],[6,5]]
1ベースのインデックスを使用代わりの0ベースされている場合)。- キーと値のペアを使用する場合、ペアのインデックスが原因でどの値が意図されているかが明確であるため、それらは逆順またはランダムな順序にすることもできます。
- 値なしでインデックスのみを出力することは許可されていません。値、または値/インデックスをキーと値のペアとして出力する必要があります(または、選択した言語でキーと値のペアが使用できない場合は、同じサイズの「キー」と「値」の2つの分離リスト)。
- 1つではなく、最大合計ですべての可能なサブシーケンスを出力できます。
- 例からわかるように、input-listには負の値と重複した値を含めることもできます。あなたは、入力整数の範囲内にあると仮定することができ。
- output-listを空にすることはできず、常に少なくとも1つの要素を含める必要があります(リストに負の値のみが含まれる場合、単一の最小の負の値を含むリストが結果として出力されます-最後の2つのテストケースを参照)。
- 可能な出力が1つあるが、複数の異なるインデックスの場合、重複しているように見えても、両方を出力できます。(つまり、上記の例では
[[5,100,5],[5,100,5]]
、可能なインデックスの組み合わせの両方について出力することができます)。
テストケース:
Input: Possible outputs: At 0-based indices: With sum:
[1,2,3,-1,-3,2,5] [1,3,5] [0,2,6] 9
[4,5,4,3] [4,4]/[5,3] [0,2]/[1,3] 8
[5,5,10,100,10,5] [5,100,5] [0,3,5]/[1,3,5] 110
[10] [10] [0] 10
[1,1,1] [1,1] [0,2] 2
[-3,7,4,-2,4] [7,4] [1,4] 11
[1,7,4,-2] [7] [1] 7
[1,2,-3,-4,5,6,-7] [2,6] [1,5] 8
[800,-31,0,0,421,726] [800,726]/[800,0,726] [0,5]/[0,3,5]/[0,2,5] 1526
[-1,7,8,-5,40,40] [8,40] [2,4]/[2,5] 48
[-5,-18,-3,-1,-10] [-1] [3] -1
[0,-3,-41,0,-99,-2,0] [0]/[0,0]/[0,0,0] [0]/[3]/[6]/[0,3]/
[0,6],[3,6]/[0,3,6] 0
powerset
サブセットのセットではありませんか?しかし、あなたは一連のサブシーケンスを返しているように見えますか?[4,5,4,3]は、[4,4]が明らかにセットではない[4,4]のいずれかになります。
[5,100,5]
、3番目の例では2回。