题解 | #乳牛各类产奶统计#
乳牛各类产奶统计
https://www.nowcoder.com/practice/4e4c1e24208e44a8a9b8c7dd5f829017
考察数组的操作。可以维持两个数组分别代表这个位置元素左侧和右侧的其他数的乘积,在遍历的时候对应相乘就是题目所要求的结果。
完整Java代码如下
import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param milk_amount int整型一维数组
* @return int整型一维数组
*/
public int[] product_except_self (int[] milk_amount) {
// write code here
int n = milk_amount.length;
int[] left = new int[n];
int[] right = new int[n];
int[] others = new int[n];
// 计算每个元素左侧所有元素的乘积
int product = 1;
for (int i = 0; i < n; i++) {
left[i] = product;
product *= milk_amount[i];
}
// 计算每个元素右侧所有元素的乘积
product = 1;
for (int i = n - 1; i >= 0; i--) {
right[i] = product;
product *= milk_amount[i];
}
// 计算其他元素的乘积
for (int i = 0; i < n; i++) {
others[i] = left[i] * right[i];
}
return others;
}
}
