题解 | #牛群重量积#
牛群重量积
https://www.nowcoder.com/practice/d3c6930f140f4b7dbf3a53dd36742193
知识点:数组
题目提示的很清楚,就是利用前缀和的思想,只不过这道题目需要使用前缀的乘积和后缀的乘积,分别定义两个数组来存储前缀乘积和后缀乘积,二者都可以通过遍历一遍数组累乘得到。之后再根据题目要求,去除当前位置及其左右的元素,也就是相隔一个位置的前缀乘积*相隔一个位置的后缀乘积,以得到答案数组。
Java题解如下
import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param nums int整型一维数组 * @return int整型一维数组 */ public int[] productExceptSelf (int[] nums) { // write code here int n = nums.length; int[] prefix = new int[n + 1]; int[] suffix = new int[n + 1]; prefix[0] = 1; suffix[n] = 1; for(int i = 0; i < n; i++) { prefix[i + 1] = prefix[i] * nums[i]; } for(int i = n - 1; i >= 0; i--) { suffix[i] = suffix[i + 1] * nums[i]; } int[] res = new int[n]; res[0] = suffix[2]; res[n - 1] = prefix[n - 2]; for(int i = 1; i < n - 1; i++) { res[i] = prefix[i - 1] * suffix[i + 2]; } return res; } }