解题思路:
当前位置的结果就是它左部分的乘积再乘以它右部分的乘积。因此需要进行两次遍历,第一次遍历用于求左部分的乘积,第二次遍历在求右部分的乘积的同时,再将最后的计算结果一起求出来。
class Solution {public int[] productExceptSelf(int[] nums) {int len = nums.length;if (len == 0)return new int[0];int[] ans = new int[len];ans[0] = 1;int tmp = 1;//左半部分乘积for (int i = 1; i < len; i++) {ans[i] = ans[i - 1] * nums[i - 1];}//右半部分乘积,巧妙地使用tmpfor (int i = len - 2; i >= 0; i--) {tmp *= nums[i + 1];ans[i] *= tmp;}return ans;}
}