你可以使用一個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策略,我們現在無法回答這個問題。 –