解法一:
public class Solution {
public int[] productExceptSelf(int[] nums) {
int product=1,zeroNum = 0;
int res[] = new int[nums.length];
for (int i : nums) {
if (i!=0) {
product*=i;
}
else zeroNum++;
}
for (int i = 0; i < res.length; i++) {
if (nums[i]==0) {
if (zeroNum>1) {
res[i]=0;
}
else {
res[i]=product;
}
}
else {
if (zeroNum>=1) {
res[i] = 0;
}
else {
res[i] = product/nums[i];
}
}
}
return res;
}
}
解法二:
int res[] = new int[nums.length];
for (int i = 0,p = 1; i < res.length; i++) {
res[i] = p;
p *= nums[i];
}
for (int i = res.length-1, p = 1; i >= 0; i--) {
res[i] = p*res[i];
p = nums[i]*p;
}
return res;
解法三: