思路:定义一个list,该list中存储的是每个下标对应的元素值为该下标(包括改下标)之前的所有值之和。
对于如下例子:1 -1 1 -1 -1 -1 -1,那么list中存储的是1 0 1 0 -1 -2 -3 ,然后对该list从后往前遍历,第一个为0的元素的下标就是我们要求的(长度-1)
import java.util.ArrayList;
import java.util.List;
public class Tmp {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
List<Integer> mylist = new ArrayList();
mylist.add(1);
mylist.add(-1);
mylist.add(1);
mylist.add(-1);
mylist.add(-1);
mylist.add(-1);
mylist.add(-1);
System.out.println(getLongestLength(mylist)+1);
}
static int getLongestLength(List<Integer> array){
// TODO
int longest = 0;
int sum =0;
int k=0;
List<Integer> list = new ArrayList();
for(int i=0;i<array.size();i++){
sum =sum +array.get(i);
list.add(sum);
}
for(int j=array.size()-1;j>=0;j--){
if(list.get(j)==0){
k=j;
break;
}
}
return k;
}
}
如果觉得有什么问题,欢迎在下方留言。