0
私のプログラムは、配列の中で最も長い連続配列を見つけようとしていますが、出力が間違っています。配列の無駄な要素を削除する
public class longsec {
public int[] longestForward(int[] arr){
int subSeqLength = 1;
int longest = 1;
int indexStart = 0;
int indexEnd = 0;
for (int i = 0; i < arr.length - 1; i++)
{
if (arr[i] == arr[i + 1] - 1)
{
subSeqLength++;
if (subSeqLength > longest)
{
longest = subSeqLength;
indexStart = i + 2 - subSeqLength;
indexEnd = i + 2;
}
}
else
subSeqLength = 1;
}
int T[] = new int[arr.length];
for (int i = indexStart; i < indexEnd; i++)
T[i]= arr[i];
return T;
}}
入力
{23,10,22,5,33,8,9,21,50,41,60,80,99、22,23,24,25,26,27 }
出力
[0、0、0、0、0、0、0、0、0、0、0、0、0、22、23、24、25、26、27]
右出力
[22,23,24,25,26,27]
どうしたのですか?ありがとうございました。
'int T [] = new int [arr.length];'はint型でなければなりません。T [] = new int [indexEnd-indexStart + 1]; 'おそらく' + 1'ではありません。睡眠が必要だ。とにかく、forループを調整する必要があります。 'T [i] = arr [i + indexStart];'または同様のもの。 – bradimus
これを行うと "java.lang.ArrayIndexOutOfBoundsException"が返されます。 –
'for'ループを調整しましたか? 'for(int i = 0; i
bradimus