检查3个整数的总和是否等于java中数组中的任何一个元素。请帮帮我
int[] arr={5, 1, 23, 21, 17, 2, 3, 9, 12};
Arrays.sort(arr);
for(int i=0;i<arr.length;i++)
System.out.println(+arr[i]);
System.out.println(Arrays.toString(arr));
for(int i=0;i<arr.length;i++){
int sum=arr[i]+arr[i+1]+arr[i+2];
if(arr[i]==sum)
答案 0 :(得分:1)
你想检查任何三个整数的总和,它等于数组中的任何一个元素吗?你需要嵌套循环
for (int i = 0; i < arr.length; i++){
for (int j = i+1; j < arr.length; j++){
for (int k = j+1; k < arr.length; k++){
int sum = arr[i] + arr[j] + arr[k];
for (int index = 0; index < arr.length; index++){
if (sum == arr[index])
return true;
}
}
}
}
return false;
编辑:我想如果你先对数组进行排序,你可以进行一些优化,但是你仍然需要类似于上面的东西,使用四重嵌套循环来检查所有总和低于最大数字的组合< / p>
答案 1 :(得分:1)
你想做那样的事吗?
int[] arr={5, 1, 23, 21, 17, 2, 3, 9, 12};
for(int i=0;i<arr.length;i++) {
for(int j=i+1;j<arr.length;j++) {
for(int k=j+1;k<arr.length;k++) {
for (int l = 0; l < arr.length; l++) {
if (arr[i]+arr[j]+arr[k]==arr[l]) {
System.out.println(arr[i]+"+"+arr[j]+"+"+arr[k]+"="+arr[l]);
}
}
}
}
}