import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param nums int整型一维数组
* @return int整型一维数组
*/
public int[] productExceptSelf (int[] nums) {
// write code here
int n = nums.length;
int[] res = new int[n];
int[] l = new int[n + 1];
int[] r = new int[n + 1];
l[0] = 1;
r[0] = 1;
for (int i = 1; i <= n; i++) {
l[i] = l[i - 1] * nums[i - 1];
}
for (int i = 1; i <= n; i++) {
r[i] = r[i - 1] * nums[n - i];
}
for (int i = 0; i < n; i++) {
int ans = l[Math.max(0, i - 1)] * r[Math.max(0, n - i - 2)];
res[i] = ans;
}
return res;
}
}
语言是Java。
这道题考察了以下知识点:
- 数组操作:包括数组的创建、访问和赋值操作。
- 数学运算:涉及乘法、数组元素之间的计算。
- 循环:使用for循环遍历数组进行计算。
- 方法声明和返回值:定义了一个公有方法
productExceptSelf,接收一个int类型的数组作为参数,并返回一个int类型的数组作为结果。
代码的文字解释如下:
- 创建一个长度为n的整型数组
res,用于存放结果。 - 创建两个辅助数组
l和r,它们分别记录每个位置左侧的乘积和右侧的乘积。l[0]和r[0]初始化为1,表示左侧和右侧初始乘积为1。 - 使用两个for循环,分别计算
l和r的元素值:l[i]表示当前位置左侧所有元素的乘积,计算方法为l[i] = l[i - 1] * nums[i - 1]。r[i]表示当前位置右侧所有元素的乘积,计算方法为r[i] = r[i - 1] * nums[n - i],其中n表示数组的长度。 - 使用一个for循环遍历数组,计算结果数组
res:对于每个位置i,将左侧乘积和右侧乘积相乘即为该位置的结果值。具体计算方法为ans = l[Math.max(0, i - 1)] * r[Math.max(0, n - i - 2)]。将计算得到的结果放入结果数组res中。 - 返回结果数组
res作为答案。

京公网安备 11010502036488号