Java 数组中等于N的连续数的所有可能和
我试图从数组中的连续元素中找到所有可能的和,这些元素加起来就是一个特定的数字。 例如: 这是我的密码-Java 数组中等于N的连续数的所有可能和,java,arrays,Java,Arrays,我试图从数组中的连续元素中找到所有可能的和,这些元素加起来就是一个特定的数字。 例如: 这是我的密码- int low = 0; int high = 0; int sum = a[0]; while(high < a.length) { if(sum < 13) { high++; if(high < a.length) {
int low = 0;
int high = 0;
int sum = a[0];
while(high < a.length) {
if(sum < 13) {
high++;
if(high < a.length) {
sum+= a[high];
}
} else if(sum > 13) {
sum-=a[low];
low++;
}
if(sum == 13) {
for(int i=low;i<=high;i++) {
System.out.println(a[i]);
}
System.out.println("new ");
low++;
high++;
sum = 0;
//return;
}
}
int-low=0;
int高=0;
整数和=a[0];
while(高13){
总和-=a[低];
低++;
}
如果(总和=13){
对于(int i=低;i在找到第一个序列后,没有正确重置变量:
if(sum == 13) {
for(int i=low;i<=high;i++) {
System.out.println(a[i]);
}
System.out.println("new ");
low++;
high++; // change to high = low; // since you want your loop to test
// sequences that start at the new (post incremented) low
sum = 0; // change to sum = a[low]; // since the initial sum is the value of
// the first element in the new sequence
}
if(总和=13){
对于(int i=low;i,如果数组可能包含零或负数
int a[] = {4,7,2,1,3,8,5,-1,1};
int length = a.length;
for (int low = 0; low < length; ++low) {
int sum = a[low];
for (int high = low + 1; high < length; ++high) {
sum += a[high];
if (sum == 13) {
for (int k = low; k <= high; ++k)
System.out.print(a[k] + " ");
System.out.println();
}
}
}
或者,您也可以保持该行的状态,并将sum=0;
更改为if(high
和顺便说一句。如果你想在数组中支持零,你只需要删除行low++
;数组是否只包含正数?是的,如果我想支持-ve数字,我如何处理它们?
int a[] = {4,7,2,1,3,8,5,-1,1};
int length = a.length;
for (int low = 0; low < length; ++low) {
int sum = a[low];
for (int high = low + 1; high < length; ++high) {
sum += a[high];
if (sum == 13) {
for (int k = low; k <= high; ++k)
System.out.print(a[k] + " ");
System.out.println();
}
}
}
4 7 2
7 2 1 3
8 5
8 5 -1 1