1. 程式人生 > 其它 >leetcode 238 除自己之外元素的乘積

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 };