summary:
math
package myapp.kit.leetcode.top100liked;
/**
* @author huangdingsheng
* @version 1.0, 2020/4/29
*
* 238
* medium
* https://leetcode.com/problems/product-of-array-except-self/
*
* Given an array nums of n integers where n > 1, return an array output such that output[i] is equal to the product of all the elements of nums except nums[i].
*
* Example:
*
* Input: [1,2,3,4]
* Output: [24,12,8,6]
* Constraint: It's guaranteed that the product of the elements of any prefix or suffix of the array (including the whole array) fits in a 32 bit integer.
*
* Note: Please solve it without division and in O(n).
*
* Follow up:
* Could you solve it with constant space complexity? (The output array does not count as extra space for the purpose of space complexity analysis.)
*
*/
public class ProductOfArrayExceptSelf {
public int[] productExceptSelf(int[] nums) {
int[] result = new int[nums.length];
int allPro = 1;
int cn = 0;
int idx = -1;
for (int i = 0; i < nums.length; i++) {
if (nums[i] == 0) {
cn++;
idx = i;
} else {
allPro *= nums[i];
}
}
// corner case , 0
if (cn > 1) {
return result;
}
if (cn == 1) {
result[idx] = allPro;
return result;
}
for (int i = 0; i < result.length; i++) {
result[i] = allPro / nums[i];
}
return result;
}
}