import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param nums int整型一维数组
* @return int整型一维数组
*/
public int[] timesExceptSelf(int[] nums) {
// write code here
// 一些特殊情况的处理
if (1 == nums.length) {
return new int[]{};
}
int[] prefix = new int[nums.length]; // 定义一个整型数组,用于存放 除当前数外,其左边的所有数相乘的结果(前缀乘)
int[] suffix = new int[nums.length]; // 定义一个整型数组,用于存放 除当前数外,其右边的所有数相乘的结果(后缀乘)
int[] res = new int[nums.length]; // 定义一个整型变量,用于存放最终的返回结果。对于每个 res[i] 来说,res[i] = prefix[i] * suffix[i]
// 别忘了进行初始化
prefix[0] = 1;
suffix[nums.length - 1] = 1;
int total = nums[0];
// 前缀乘
for (int i = 1; i < nums.length; i++) {
prefix[i] = total;
total *= nums[i];
}
total = nums[nums.length - 1];
// 后缀乘
for (int i = nums.length - 2; i > -1; i--) {
suffix[i] = total;
total *= nums[i];
}
// 返回结果
for (int i = 0; i < nums.length; i++) {
res[i] = prefix[i] * suffix[i];
}
return res;
}
}