在List中查找相同和连续的数字

时间:2017-01-02 12:52:21

标签: java arraylist

一直试图找到一种方法来解决this CodeWars challenge,但无法找到检查是否存在例如的方法。连续4个号码。如果我得到2我就可以做到:if (s.get(i) == s.get(i + 1) 但我如何实际检查是否有10个连续数字呢?我不能做s.get(i) == ... == s.get(i + 10) 因为可能有11,所以肯定不是我正在寻找的答案。到目前为止,我已经得到了这个,因为我非常确定我必须遍历所有对象,但不知道如何对我的结果ArrayList进行比较和添加,以便它替换那些连续的数字。

public static List<Integer> sumConsecutives(List<Integer> s) {
    List<Integer> result = new ArrayList<Integer>(s);
   for (int i : s) {
       if () // checking if there are consecutive same numbers
   }
}

1 个答案:

答案 0 :(得分:1)

这是我能想到的最直接的解决方案:

public static List<Integer> sumConsecutives(List<Integer> s) {
    ArrayList<Integer> returnList = new ArrayList<>();
    int currentRepeating = 0;
    for (int i : s) {
        if (returnList.isEmpty() || currentRepeating != i) {
            currentRepeating = i;
            returnList.add(i);
        } else {
            returnList.set(returnList.size() - 1, returnList.get(returnList.size() - 1) + i);
        }
    }
    return returnList;
}

对于输入中的每个数字i,如果当前重复次数不等于i,请将i添加到返回列表,并将当前重复次数设置为{{1 }}。如果 等于当前重复的数字,请将其添加到列表中的最后一个元素。