Medium
讲真,这种奇技淫巧的题,不做一次是永远不可能在面试时答上来的。老老实实刷tag题,面经题,理解透彻好好总结,不一定能让你在面试场上做出来新题,但却是唯一能提高这种可能的方法了。
这题要求O(n)Time Complexity, 所以分两次扫数组。一次从左到右,把每个元素左边的乘积算出来;第二次从右到左,把每个元素右边的再乘上去。这样就完成了乘完所有非自己的元素。
class Solution {
public int[] productExceptSelf(int[] nums) {
int[] res = new int[nums.length];
res[0] = 1;
for (int i = 1; i < nums.length; i++){
res[i] = res[i - 1] * nums[i - 1];
}
int right = 1;
for (int j = nums.length - 1; j >= 0; j--){
res[j] *= right;
right *= nums[j];
}
return res;
}
}