思路:求解除自身以外的所有數字的乘積,就是求解自身左側的乘積與右側乘積的乘積,可以分為兩個子問題:自左向右求解累乘結果;自右向左求解累乘結果。已經計算的結果可以重複使用。**如下:
public int productexceptself(int nums)
int n=nums.length;
int leftres=new int[n];
int rightres=new int[n];
int answer=new int[n];
//求解左側累乘結果與右側累乘結果
leftres[0]=nums[0];
rightres[n-1]=nums[n-1];
for(int i=1;i高階:因為題目說明answer不在空間計算範圍內,所以可以將乙個輔助陣列放到answer陣列,另乙個輔助陣列使用單個累乘結果存放。**如下:
public int productexceptself(int nums)
int n=nums.length;
//answer存放自左向右累乘結果
int answer=new int[n];
answer[0]=1;
//rightres存放自右向左累乘結果
int rightres=1;
//自左向右計算answer
for(int i=1;i=0;i--)
return answer;
}
leetcode 238 除自身以外陣列的乘積
給定長度為 n 的整數陣列 nums,其中 n 1,返回輸出陣列 output 其中 output i 等於 nums 中除 nums i 之外其餘各元素的乘積。示例 輸入 1,2,3,4 輸出 24,12,8,6 說明 請不要使用除法,且在 o n 時間複雜度內完成此題。高階 你可以在常數空間複雜...
leetcode238 除自身以外陣列的乘積
從左到右遍歷一趟,記錄每個位置左邊的乘積 首位為1 從右到左走一趟,將上一步的結果累乘每一位右邊的乘積 class solution object def productexceptself self,nums if not nums return output 1 len nums k 1 for...
LeetCode 238 除自身以外陣列的乘積
題目描述 給定長度為 n 的整數陣列 nums,其中 n 1,返回輸出陣列 output 其中 output i 等於 nums 中除 nums i 之外其餘各元素的乘積。示例 輸入 1,2,3,4 輸出 24,12,8,6 說明 請不要使用除法,且在 o n 時間複雜度內完成此題。高階 你可以在常...