在codeFights任务

时间:2018-01-18 11:30:00

标签: java

我的日常任务的目标是计算给定数组(int [] a)中有多少个整数组(从1到10000,10001到20000等到1000000)(例如,a [ 0] = 2,所以它属于组1)。

我对此的看法如下:

static int countingGroups(int[] a) 
{
    Set<Integer> setOfGroupsExposed = new HashSet<>();
    // Creating set for counting groups

    List<Integer>list = IntStream.iterate(1,i->i+(1*10000)).limit(101).boxed()
            .collect(Collectors.toList());
    //      list.forEach(System.out::println);

    int res = setOfGroupsExposed.size();

    for (int i = 0; i <a.length ; i++) {
        for (int j = 0; j <list.size() ; j++) {
            if(a[i]>=list.get(j)&& a[i]<list.get(j++))
                setOfGroupsExposed.add(j);
    //          System.out.println(setOfGroupsExposed); - prints just empty brackets


        }
    }

    return res;
}

我无法理解我的循环在这里出了什么问题,以及为什么Set总是空的。

1 个答案:

答案 0 :(得分:3)

你应该改变

if (a[i]>=list.get(j)&& a[i]<list.get(j++))

if (a[i]>=list.get(j)&& a[i]<list.get(j+1))

否则您在每次迭代中增加j两次,此外,j++会返回j的原始值,因此您的条件与if (a[i]>=list.get(j)&& a[i]<list.get(j))具有相同的效果。< / p>