LeetCode 除自身以外陣列的乘積

2021-09-11 19:53:28 字數 1135 閱讀 3031

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

示例:

輸入: [1,2,3,4]

輸出: [24,12,8,6]

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

高階:

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

方法一:使用動態規劃。(時間複雜度為o(n),額外的空間複雜度為o(n))

第一遍掃瞄nums,得到dpleft[i] = [0,i)連續的乘積

第二遍掃瞄nums,得到result[i] = (i, nums.size() - 1]連續的乘積

第三遍掃瞄result,,result[i] = dpleft[i] * result[i] 即為結果

class solution 

//第二遍掃瞄遍歷

for (int i = numssize - 2; i >= 0; --i)

//result[i] * dpleft[i]即為除nums[i]之外的各個元素乘積

方法二:把上面的動態陣列去掉,更改為遞推。(時間複雜度為o(n),額外的空間複雜度為o(1))

class solution 

//這裡省略的(i, numssize - 1]的陣列動態規劃求解,修改為遞推

int rightvalue = 1;//值為(i, numssize - 1]

leetcode 除自身以外陣列的乘積

題目 給你乙個長度為 n 的整數陣列 nums,其中 n 1,返回輸出陣列 output 其中 output i 等於 nums 中除 nums i 之外其餘各元素的乘積。說明 示例 輸入 1,2,3,4 輸出 24,12,8,6 方案一 除法 用到除法,就要檢驗除數是否為0 class solut...

Leetcode 除自身以外陣列的乘積

分析 這道題不能使用除法,顯而易見的方法就是左邊的乘積乘以右邊的乘積,這樣很好理解。class solution for int i n i 0 i for int i 1 i n i return ans 高階 題目還提到在時間複雜度o n 的情況下,是否可以在空間複雜度為常數的級別內完成。分析 ...

除自身以外陣列的乘積

目錄 1 題目描述 2 題目分析 3 實現 給定長度為 n 的整數陣列nums,其中 n 1,返回輸出陣列output,其中output i 等於nums中除nums i 之外其餘各元素的乘積。示例 輸入 1,2,3,4 輸出 24,12,8,6 說明 請不要使用除法,且在 o n 時間複雜度內完成...