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.
留言
張貼留言