从前处理一边,再从后处理一遍,从前处理的时候是从第一个数到当前所有数的积,从后处理的时候是从最后一个数到当前数的积。
当求第i个数的时候只需要讲从前处理到i-1的积乘于从后处理到i+1的积,即可得到需要求的。
1 class Solution { 2 public: 3 vector productExceptSelf(vector & nums) { 4 int n=nums.size(); 5 vector left(n,1),right(n,1),result; 6 left[0]=nums[0]; 7 right[n-1]=nums[n-1]; 8 for(int i=1;i=0;i--)11 right[i]=nums[i]*right[i+1];12 result.push_back(right[1]);13 for(int i=1;i