给定一个列表,其中每个项目是字母“I”(未完成)或数字(已完成),输出完整通道的最长序列的长度。列表前面是项目数。给定8 4 15 9 I 30 2 I 20,输出为3(因为完整通道的最长序列是4 15 9)。
如果序列是数字和I的混合,我就能找到正确的数字,但如果序列只有I或只有数字,我就找不到了。
int currSeq = 0;
int longestSeq = 0;
int lastIndex = 0;
boolean hasHit = false;
for (i = 0; i < numItems; i++) {
currSeq = i - lastIndex;
if (listItems[i].equals("I") && currSeq > longestSeq) {
longestSeq = currSeq - (hasHit ? 1 : 0);
lastIndex = i;
hasHit = true;
}
}
1条答案
按热度按时间zpqajqem1#