你可以使用一个2D的实际数目的信息ArrayList中,声明如下:
ArrayList<ArrayList<Integer>> result = new ArrayList<ArrayList<Integer>>();
然后声明2周的ArrayList在该过程结束时添加到它:
ArrayList<Integer> length = new ArrayList<Integer>();
ArrayList<Integer> value = new ArrayList<Integer>();
然后
1)遍历列表检查元素是否与先前相同。
如果是,继续进行下去直到结束或发现一个不同的元素,此时将ArrayList中前一个等于元素的数量称为'length',并将该元素的值存储在名为'value ”。有一个int(称为index say),它存储包含最长当前子序列长度的元素索引(它将与包含它所组成元素值的元素的索引相同)被存储在值中))。
如果不是,移动到下一个元素。
2)重复该过程,必要时更新索引(即如果发现更长的子序列)。
要增加长度和值导致底,只是做result.add(length);
和result.add(value);
如果你想在一个整数返回一个对象,它拥有所有必要的信息,你可以换整型“索引”和将其添加到名为'length'的ArrayList的末尾,或者将其添加到新的ArrayList中并添加该ArrayList以生成结果。
注意,在指数我在第一ArrayList中检索元素(在这种情况下,一个名为“长度”)已存储在结果后,你需要做的
result.get(0).get(i);
编辑:
所以for循环一部分,我脑子里想的是这样的:
boolean same = false;
int sequenceLength = 0;
Integer sequenceInteger = null;
for (int i = 1; i < numbers.size(); i++)
{
if(numbers.get(i).equals(numbers.get(i-1)))
{
same = true;
sequenceLength++;
}
else(if same == true)
{
sequenceInteger = new Integer(sequenceLength);
//add sequenceInteger to length and numbers.get(i-1) to value
same = false;
sequenceLength = 0;
}
// else do nothing since same is false, which means that the current
// element is different from the previous and the previous is
// different the one before that, so there are no new values to store
}
// end of list reached
(if same == true)
{
sequenceInteger = new Integer(sequenceLength);
//add sequenceInteger to length and numbers.get(i-1) to value
same = false;
}
你最好确保你展示你的工作。根据Stack Overflow策略,我们现在无法回答这个问题。 –