0
入力は-5から5の範囲の整数に設定されます。その結果、整数の最長のサブセットが得られます。ゼロ以上。プログラムの実行時間をΘnにする方法
私は以下を考え出すことができる: 入力が[N 0]入力される
let start, longestStart, end, longestEnd, sum = 0
for i=0 to n-1
start = i
sum = input[i]
for j=1 to n
if sum + input[j] >= 0 then
end=j;
if end - start > longestEnd - longestStart then
longestStart = start;
longestEnd = end;
をしかし、これはΘ(N^2)です。私はこのループになっΘ(n)の は、我々は数字の配列にこれを適用することができ、任意のA、Bまたはnの
a - b == (a + n) - (b + n)
ので、あなたに
ありがとうございます。私はまだ少し混乱しています。 [1、2、3、-5、4、3、-1]と入力した場合、この配列の合計は[1,3,6,1,5,8,7]です。配列全体が最長のサブアレイであることは明らかですが、ローカルミニマムとマキシマでどのように取得するのですか? – swordgit
@swordgit:あなたの例は答えを探しているアレイ全体ではないのですか?合計がゼロ以上の整数の最長部分集合を求めました。 –