package a_od_test;
import java.util.Scanner;
/*
数组的中心位置
题目描述:
给你一个整数数组nums,请计算数组的中心位置,数组的中心位置是数组的一个下标,
其左侧的所有元素相乘的积等于右侧所有元素相乘的积,
数组的第一个元素的左侧积为1,最后一个元素的右侧积为1
如果数组有多个中心位置,应该返回最靠近左边的那一个,如果数组不存在中心位置,返回-1
示例1:
输入:
2 5 3 6 5 6
输出
3
*/
public class Main14 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String[] line = sc.nextLine().split(" ");
int len = line.length;
int[] ints = new int[len];
for (int i = 0; i < len; i++) {
ints[i] = Integer.parseInt(line[i]);
}
int[] left = new int[len];
int[] right = new int[len];
left[0] = ints[0];
right[len - 1] = ints[len - 1];
for (int i = 1; i < len; i++) {
left[i] = left[i - 1] * ints[i];
}
for (int i = len - 2; i >= 0; i--) {
right[i] = right[i + 1] * ints[i];
}
int result = -1;
for (int i = 1; i < len; i++) {
if (left[i - 1] == right[i + 1]) {
result = i;
break;
}
}
System.out.println(result);
}
}
华为OD机试:14 数组的中心位置
最新推荐文章于 2024-05-31 08:57:03 发布