238. Product of Array Except Self (Java)




很有趣的題目,但是最一開始真的是想破頭。
但是基本上概念是這樣
給一個陣列[a1,a2,a3,a4]
結果要輸出[a2a3a4, a1a3a4, a1a2a4, a1a2a3]
其實就是要我們做出兩個陣列
A陣列 [1,a1,a1a2,a1a2a3]
B陣列 [a2a3a4,a2a3,a2,1]
然後上下相乘而已。

解法如下:
首先長度為零的話直接先return
if(nums.length==0){return nums;}

// 在這邊做一個 IntArray1 [1     ,a1  ,a1a2,a1a2a3]

int temp=1;

int[] IntArray1 = new int[nums.length];

for(int i=0; i<nums.length; i++){

     IntArray1[i] = temp;

     temp *= nums[i];

}


//  在這邊做第二個 IntArray2 [a2a3a4,a3a4,a4  ,1]
temp =1;
int[] IntArray2 = new int[nums.length];
for(int i=nums.length-1;i>=0; i--){
  IntArray2[i] = temp;
temp *= nums[i];
// IntArray1 * IntArray2 = [a2a3a4,a1a3a4,a1a2a4,a1a2a3]
IntArray2[i] *= IntArray1[i];
}
return IntArray2;


Runtime: 2 ms
Your runtime beats 99.83 % of java submissions.

留言

這個網誌中的熱門文章

利用Accuweather實作天氣APP

實作Android導覽教學(fragment)