解題思路
分別算出從前與從後算到該 index 的乘積,最後再相乘到 output 。
程式碼
class Solution { public: vector<int> productExceptSelf(vector<int>& nums) { int prefix[100001] = {0}, suffix[100001] = {0}; int pre = 1; for(int i=0; i<nums.size(); i++) { prefix[i] = pre * nums[i]; pre = prefix[i]; } int suf = 1; for(int i=nums.size() - 1; i>=0; i--) { suffix[i] = suf * nums[i]; suf = suffix[i]; } vector<int> ans; for(int i=0; i<nums.size(); i++) { if(i == 0) ans.push_back(suffix[i+1]); else if(i == nums.size()-1) ans.push_back(prefix[i-1]); else ans.push_back(prefix[i-1] * suffix[i+1]); } return ans; } };
沒有留言:
張貼留言