我正在处理一个问题,其中我有一个输入整数列表,例如 {0,3,6,9,12,18,21,24,27,33,39}。我需要通过分析原始列表来创建一个新列表,这样如果我找到一个 3 的倍数的序列,那么该序列的第一个元素和最后一个元素都将添加到该列表中。不会添加该序列的第一个和最后一个元素之间的任何元素。任何其他元素(没有 3 的连续倍数)都将被添加。所以对于 {0,3,6,9,12,18,24,27,30,39,45} 的输入列表,我的输出应该是 [0,12,18,24,30,39,45]。请注意,我的第一个 3 的倍数序列是 0、3、6、9、12;所以根据我的要求,新列表有 0、12。由于 18 没有任何两侧相差 3 的邻居,所以它是这样添加的。同样,将 24,27,30 添加为 24,30。此外,与 18、39 和 45 类似,同样添加。
int difference = 3;
public static List<Integer> parseList(List<Integer> input, int difference) {
List<Integer> output = new ArrayList<Integer> ();
for (int i = 0; i < input.size()-1; i++) {
// Check if subsequent element values differ by specific difference
if ( (input.get(i+1) - input.get(i)) == difference) {
output.add(input.get(i));
output.add(input.get(i+1));
}
else {
output.add(input.get(i));
}
}
return output;
}
我得到的输出是:0 3 3 6 6 9 9 12 12 18 24 27 27 30 30 39 同样,我的预期输出是:[0,12,18,24,30,39,45] 请注意,不仅我得到中间重复值,我也缺少最后一个值(ie45)。