我需要创建一个方法,在数组中找到最多可以添加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++;
}
}
}
答案 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
我希望它有用