leetcode 238 除自己之外元素的乘积
遇到的时候有点困难,看了答案发现还算直观。可以维护两个数组,一个代表第i个节点往左所有元素乘积,另一个代表往右所有元素乘积,然后再建立一个答案数组,乘一下即可。当然也可以只维护一个数组,比如先建立往左或者往右的,完成之后在新一轮循环中维护一个数,该数的值为当前节点往相反方向所有元素的乘积,在循环中乘上数组当前值与该数相乘,并赋给数组当前节点,完成赋值。贴代码
1 class Solution { 2 public: 3 vector<int> productExceptSelf(vector<int>& nums) 4 { 5 int l = nums.size(); 6 vector<int> res(l,0); 7 res[0] = 1; 8 for(int i = 1 ; i < l ; i++) 9 res[i] = res[i-1]*nums[i-1]; 10 int R = 1; 11 for(int i = l-2 ; i >=-1 ;i--) 12 { 13 res[i+1] *= R; 14 R *= nums[i+1]; 15 } 16 return res; 17 } 18 };

浙公网安备 33010602011771号