238. 除自身以外陣列的乘積
阿新 • • 發佈:2020-07-30
給你一個長度為 n 的整數陣列 nums,其中 n > 1,返回輸出陣列 output ,其中 output[i] 等於 nums 中除 nums[i] 之外其餘各元素的乘積。
示例:
輸入: [1,2,3,4]
輸出: [24,12,8,6]
class Solution { public int[] productExceptSelf(int[] nums) { int length = nums.length; int[] answer = new int[length]; // answer[i] 表示索引 i 左側所有元素的乘積 // 因為索引為 '0' 的元素左側沒有元素, 所以 answer[0] = 1 answer[0] = 1; for (int i = 1; i < length; i++) { // 當前位置左邊所有數乘積 answer[i] = nums[i - 1] * answer[i - 1]; } // R 為右側所有元素的乘積 // 剛開始右邊沒有元素,所以 R = 1 int R = 1; for (int i = length - 1; i >= 0; i--) { // 對於索引 i,左邊的乘積為 answer[i],右邊的乘積為 R answer[i] = answer[i] * R; // R 需要包含右邊所有的乘積,所以計算下一個結果時需要將當前值乘到 R 上 R *= nums[i]; } return answer; } }
提示:題目資料保證陣列之中任意元素的全部字首元素和字尾(甚至是整個陣列)的乘積都在 32 位整數範圍內。
說明: 請不要使用除法,且在 O(n) 時間複雜度內完成此題。
進階:
你可以在常數空間複雜度內完成這個題目嗎?( 出於對空間複雜度分析的目的,輸出陣列不被視為額外空間。)
來源:力扣(LeetCode)
連結:https://leetcode-cn.com/problems/product-of-array-except-self
著作權歸領釦網路所有。商業轉載請聯絡官方授權,非商業轉載請註明出處。