所以,我正在编写一个代码来查找输入数字中增长最长的子序列。
int curr_len = 0, max_len = 0, start = 0;
for (int i = 1; i <= listN.size(); i++){
if (listN.get(i-1) < listN.get(i)){
curr_len++;
if (curr_len >= max_len){
max_len = curr_len;
start = i - max_len + 1;
}
} else {
curr_len = 1;
}
}
for (int i = 0; i < max_len; i++)
listAsc.add(start+i);
问题是我在代码片段中得到了IndexOutOfBoundsException
if (listN.get(i-1) < listN.get(i))
任何人都可以帮忙如何正确地做到这一点?
答案 0 :(得分:1)
使用
for (int i = 1; i < listN.size(); i++){
因为索引从0开始。使用索引&lt; 0或&gt; = listN.size()会在get(i)中生成IndexOutOfBoundsException
。
请参阅:http://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html#get%28int%29