找到加起来给定值的arrray区间

时间:2016-10-13 01:32:45

标签: java algorithm

我需要创建一个方法,在数组中找到最多可以添加13的区间

例如: {10,0,3,0,1,1,1,10,5,5,5}

0和2添加到13

0和3添加到13

3和7加13

4和7添加到13

编辑:这是我得到的输出

区间0和2是13

区间0和6是13

区间2和9是13

这就是我的尝试:

public static void findSum (int[] arr) {
    int i = 0;
    int j = 1;
    int resu = 0;

    while (i < arr.length-1) {
        if (resu == 13) {
            j++;
        }
        resu = arr[i] + arr[j];   
        while (j < arr.length-1 && resu < 13){
            j++;
            resu = resu + arr[j];   
        }
        if (resu == 13){    
            System.out.println("interval " + i + " and " + j + " is 13");
        }
        if (resu != 13){
            i++;
        }
    }
}

3 个答案:

答案 0 :(得分:2)

public void findIntervalSumOf(int sum, int[] values){
    for (int i = 0, size = values.length; i < size; i++){
        int currentSum = values[i];
        for (int j = i+1; j < size; j++){
             currentSum += values[j];
             if (currentSum == sum) {
                System.out.println(String.format("start: %d end %d", i, j));
             } else if (currentSum > sum) {
                break;
             }

        }
    }
}   

答案 1 :(得分:1)

我认为你在错误的地方声明变量以及不必要的条件语句时遇到了一些问题。这应该为你做.. ..

SELECT Extract(YEAR FROM BirthDate) ,
       Avg(VacationHours),
       Avg(SickLeaveHours)
FROM   HumanResources.employee
WHERE  BirthDate BETWEEN '1960-1-1' AND '1980-12-31'
GROUP BY Extract(YEAR FROM BirthDate)

答案 2 :(得分:0)

以下代码已使用您的问题示例

进行了测试
public class TestArray {

    /**
     * @param args
     */
    public static void main(String[] args) {
        int[] arr = {10,0,3,0,1,1,1,10,5,5,5};
        findSum(arr);
    }

    public static void findSum(int[] arr) {

        for (int i = 0; i < arr.length - 1; i++) {
            int sum = 0;
            sum += arr[i];
            for (int j = i + 1; j < arr.length; j++) {
                sum += arr[j];
                if (sum == 13) {
                    System.out.println("from=" + i + " to=" + j + " the sum is=13");
                }
            }
        }
    }

}

结果是:

from=0 to=2 the sum is=13
from=0 to=3 the sum is=13
from=3 to=7 the sum is=13
from=4 to=7 the sum is=13

我希望它有用