我得到了一个数字数组(整数),如果右侧的数字总和等于 o(n) 中左侧的数字总和,我需要返回该元素。
例如数组 {1,2,2,9,3,2} 程序应该打印 9,因为 1+2+2 = 5 且 3+2=5
我附上了我的代码,但它并不复杂。 感谢您的帮助。
谢谢。
public class Program {
public static void checkIfEqualOption1(int[] arr){
int sumRight = 0;
int sumLeft=0;
//sumRight+=numbers[0];
for (int i=0; i < arr.length; i++){
if (i>0){
sumRight+=arr[i-1];
for (int j=i+1; j<arr.length; j++){
sumLeft+=arr[j];
}
if (sumRight==sumLeft){
System.out.println("\nFound = "+arr[i]);
break;
}
}
}
}
public static void print(int[] arr){
for (int i=0; i < arr.length; i++){
System.out.print(arr[i] + " ");
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("Hi");
int[] numbers = {1,2,2,9,3,2};
System.out.println("Array numbers:");
for (int i=0; i < numbers.length; i++){
System.out.print(numbers[i] + " ");
}
System.out.println("\n");
checkIfEqualOption1(numbers);
}
}
最佳答案
从观察开始,对于每个i
arraySum(0, i) + arraySum(i+1, n) == arrayTotal
所以
arraySum(i+1, n) == arrayTotal - arraySum(0, i);
^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^
Sum on the right Sum on the left
在第一遍中计算arrayTotal
;然后从左侧遍历数组,计算部分和。一旦到达某个位置就停止
partialSum == arrayTotal - partialSum
关于java - 检查 o(n) 中数组左侧的总和是否等于数组右侧的总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41943700/