数组的中心位置
题目描述
给你一个整数数组nums
,请计算数组的中心位置。
数组中心位置是数组的一个下标,其左侧所有元素相乘的积等于右侧所有元素相乘的积。
数组第一个元素的左侧积为1
,最后一个元素的右侧积为1
。
如果数组有多个中心位置,应该返回最靠近左边的那一个。
如果数组不存在中心位置,返回-1
。
输入描述
输入只有一行,给出 �N 个正整数用空格分格:nums = 2 5 3 6 5 6
1 <= nums.length <= 1024
1 <= nums[i] <= 10
输出描述
输出:3
示例一
输入
2 5 3 6 5 6
Copy
输出
3
Copy
说明
中心位置是3
。
左侧数之积 sum = nums[0] * nums[1] * nums[2] = 2 * 5 * 3 = 30
,
右侧数之积 sum = nums[4] * nums[5] = 5 * 6 = 30
,二者相等。
Java
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
try (Scanner in = new Scanner(System.in)) {
String line = in.nextLine();
int res = solution(line);
System.out.println(res);
}
}
private static int solution(String line) {
int lRes = 1, rRes = 1;
String[] split = line.split(" ");
int[] ints = new int[split.length];
for (int i = 0; i < split.length; i++) {
ints[i] = Integer.parseInt(split[i]);
rRes *= ints[i];
}
for (int i = 0; i < ints.length; i++) {
rRes = rRes/ints[i];
if (lRes == rRes) {
return i;
}
lRes *= ints[i];
}
return -1;
}
}