LeetCode 238. 除自身以外數組的乘積( Product of Array Except Self)


題目描述

 

給定長度為 n 的整數數組 nums,其中 n > 1,返回輸出數組 output ,其中 output[i] 等於 nums 中除 nums[i] 之外其余各元素的乘積。

示例:

輸入: [1,2,3,4]
輸出: [24,12,8,6]

說明: 請不要使用除法,且在 O(n) 時間復雜度內完成此題。

進階:
你可以在常數空間復雜度內完成這個題目嗎?( 出於對空間復雜度分析的目的,輸出數組不被視為額外空間。)

 

解題思路

 

首先從后往前遍歷一遍,用結果數組來存儲除當前數外的后面所有數的乘積,然后從前往后遍歷,用nums存儲除當前數外前面的所有數乘積,再把與結果數組乘積相乘得到除當前數以外所有數的乘積。

 

代碼

 

 1 class Solution {
 2 public:
 3     vector<int> productExceptSelf(vector<int>& nums) {
 4         vector<int> res(nums);
 5         res[nums.size() - 1] = 1;
 6         for(int i = res.size() - 2; i >= 0; i--)
 7             res[i] = nums[i + 1] * res[i + 1];
 8         for(int i = 1; i < res.size(); i++){
 9             res[i] *= nums[i - 1];
10             nums[i] *= nums[i - 1];
11         }
12         return res;
13     }
14 };

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM