给定长度为 n 的整数数组 nums
,其中 n > 1,返回输出数组 output
,其中 output[i]
等于 nums
中除 nums[i]
之外其余各元素的乘积。
示例:
输入:[1,2,3,4]
输出:[24,12,8,6]
说明: 请不要使用除法,且在 O(n) 时间复杂度内完成此题。
Java实现:
class Solution {
public int[] productExceptSelf(int[] nums) {
int [] output = new int[nums.length];
// 分为3种情况
// 有1个零 有两个零 没有零
int m = 1; // 积累计
int zerocount = 0; //数组中零的个数
for(int i = 0;i<nums.length;i++)
{
if(nums[i] == 0)
{
zerocount ++;
continue;
}
m *= nums[i];
}
if(zerocount >1) return output; // 假如有两个零以上(包括两个零),则可以直接返回,结果数组中所有元素都必为0
for(int i = 0;i<nums.length;i++)
{
if(zerocount ==1) // 有一个零或没有零的判断
{
if(nums[i] == 0)
{
output[i] = m;
}else
{
output[i] = 0;
}
}else
{
output[i] = m/nums[i];
}
}
return output;
}
}