238. 除自身以外数组的乘积
程序员文章站
2022-03-24 14:15:12
...
题目:
238. 除自身以外数组的乘积
剑指 Offer 66. 构建乘积数组
题解:
代码:
public class code238 {
// // 方法1:左右数组
// public static int[] productExceptSelf(int[] nums) {
// if(nums == null || nums.length == 0)
// {
// return nums;
// }
// int len = nums.length;
// int left[] = new int[len];
// int right[] = new int[len];
// left[0] = 1;
// right[len - 1] = 1;
// for(int i = 1; i < len; i++)
// {
// left[i] = left[i - 1] * nums[i - 1];
// }
// for(int i = len - 2; i >= 0; i--)
// {
// right[i] = right[i + 1] * nums[i + 1];
// }
// int ans[] = new int[len];
// for(int i = 0; i < len; i++)
// {
// ans[i] = left[i] * right[i];
// }
// return ans;
// }
// 方法2:左(或右)数组
public static int[] productExceptSelf(int[] nums) {
int ans[] = new int[nums.length];
int cur = 1;
for(int i = 0; i < nums.length; i++)
{
ans[i] = cur; // 先乘左边的数(不包括自己)
cur *= nums[i];
}
cur = 1;
for(int i = nums.length - 1; i >= 0; i--)
{
ans[i] *= cur; // 再乘右边的数(不包括自己)
cur *= nums[i];
}
return ans;
}
public static void main(String[] args) {
int nums[] = { 1, 2, 3, 4 };
int res[] = productExceptSelf(nums);
for(int i = 0; i < res.length; i++)
{
System.out.print(res[i] + " ");
}
System.out.println();
}
}