处理数组中的重叠数字

时间:2015-03-13 18:05:53

标签: java arrays

我的程序使用一对数字并将它们相互减去,然后将这些对中的所有差异添加回来。

我的问题是,有些数字是重叠的,我使用的是开始和结束时间。我需要找到一种忽略重叠数字的方法,以便输入

{{10, 14}, {4, 18}, {19, 20}, {19, 20}, {13, 20}

总共返回16而不是27。到目前为止,我创建了另一个名为hours的数组来检查已经存在的时间。这是代码的一部分:

public static int monitoring(int[][] intervals) {
    int sum = 0;
    int start = 0;
    int end = 0;
    boolean[] hours = new boolean[24];
    int count = 0;

    for(int i = 0; i < intervals.length; i++) {
        end = intervals[i][1];
        start = intervals[i][0];    
        for(int j = start; j < end; j++) {
            hours[j] = true;
            count++;
        sum += end - start;
        }
    }

    return sum;

1 个答案:

答案 0 :(得分:2)

我不知道你想要得到什么,可能有两种选择:

  1. 你可能试图在最大值之间找到差异 如果成对的第二个元素,成对的第一个元素的最小值
  2. 您想要计算给定的唯一“点数”(或小时数) 区间清单。
  3. 最简单的解决方案可以是:

                if (!hours[j]) {
                    hours[j] = true;
                    count++;
                }
    

    在这种情况下,您甚至不需要“sum”变量。