阵列组计数器

时间:2014-10-03 01:04:17

标签: java arrays counter

给定提供的数组,确定存在多少个指定大小的组。

对于数组

[1,1,1,2,2,2,3,3,3,4,5,6,7] 

有7组具有至少一个,3组具有至少2个,3组具有至少3.组是一系列相同的值。 1 1 1是一个3的组,但它也是1和2的组。要计为组,所有值必须相同。 1 1 1是一组3,因为连续有3个1。

我只是好奇,怎么会这样呢?

2 个答案:

答案 0 :(得分:0)

使用java 8

long result = Stream.of(1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 5, 6, 7)
        .collect(Collectors.groupingBy(i -> i))
        .entrySet().stream()
        .filter(entry -> entry.getValue().size() >= 1) // specify the size
        .count();
System.out.println(result);

答案 1 :(得分:0)

我使用了一个set数组,其中我查看了所有组并进行了循环以查看每个新数字以及它是否与之前的数字相同。我有一个传递到新数组的组计数器。然后打印出结果。

公共课作业{

public static void main(String[] args) {

    int[] array_list = {3, 3, 3, 3, 3, 9, 4, 4, 4, 5, 5, 5, 5, 6, 6, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8};
    int[] found_groups = new int[7];
    int group_size = 1; 
    int num_changed = 0; 
    for (int i = 1; i < array_list.length; i++) {

        if (array_list[i] == array_list[i-1]) {
            group_size++;

            if (group_size == 5) {
                found_groups[0] = group_size;
            }
            if (group_size == 3) {
                found_groups[2] = group_size; 
                found_groups[5] = group_size; 
            }
            if (group_size == 4) {
                found_groups[3] = group_size; 
            }
            if (group_size == 2) {
                found_groups[4] = group_size; 
            }
            if (group_size ==8) {
                found_groups[6] = group_size; 
            }
        }

        else if (array_list[i] != array_list[i-1]) {
            num_changed++;
            group_size = 1;
            if (group_size == 1) {
                found_groups[1] = group_size;
            }  
        }

    }

    int group_one = 0; 
    int group_two = 0; 
    int group_three = 0; 
    int group_four = 0; 
    int group_five = 0; 
    int group_six = 0; 
    int group_one_final = 0; 

    for (int i = 0; i < found_groups.length; i++) {
        if (found_groups[i] == 5) {
            group_five++; 
            group_two++;
            group_three++;
            group_four++;

        }
        if (found_groups[i] == 1) {
            group_one++; 
            group_one_final = group_one + num_changed; 
        }
        if (found_groups[i] == 3) {
            group_three++; 
            group_two++;
        }
        if (found_groups[i] == 4) {
            group_four++;
            group_two++;
            group_three++;

        }
        if (found_groups[i] == 8) {
            group_six++; 
            group_two++; 
            group_three++;
            group_four++;
            group_five++;
        }
        if (found_groups[i] == 2) {
            group_two++; 

        }
    }

    System.out.println("number of ones groups: " + group_one_final);
    System.out.println("number of two groups: " + group_two);
    System.out.println("number of three groups: " + group_three );
    System.out.println("number of fours groups: " + group_four);
    System.out.println("number of fives groups: " + group_five);
    System.out.println("number of sixes groups: " + group_six);
}   

}