难度中等1294收藏分享切换为英文接收动态反馈
给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。
题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。
JAVA:
class Solution {
public int[] productExceptSelf(int[] nums) {
int n=nums.length;
int[] answer=new int[nums.length];
int count0=0;
for(int i=0;i<nums.length;i++){
if(nums[i]==0){
count0++;
}
}
//没有0
if(count0==0){
int sum0=1;//0个0时的乘积
for(int j=0;j<n;j++){
sum0*=nums[j];
}
for(int k=0;k<n;k++){
answer[k]=(int)sum0/nums[k];
}
}
//一个0
if(count0==1){
int sum1=1;//1个0时的乘积
int cnt0=0;
for(int i=0;i<n;i++){
if(nums[i]!=0){
answer[i]=0;
sum1*=nums[i];
}
if(nums[i]==0){
cnt0=i;
}
}
answer[cnt0]=sum1;
}
//有2个及以上0
if(count0>1){
int x=0;
while(x<n){
answer[x]=0;
x++;
}
}
return answer;
}
}