LeetCode Note Java 00238:Product of Array Except Self
回傳一個 Array,其每一項等於輸入 Array 的每一項排除自己後的乘積。須滿足 O(n) 時間複雜度,且不得使用除法。
題目
Product of Array Except Self Medium
Given an integer array nums, return an array answer such that answer[i] is equal to the product of all the elements of nums except nums[i].
The product of any prefix or suffix of nums is guaranteed to fit in a 32-bit integer.
You must write an algorithm that runs in O(n) time and without using the division operation.
解法
- 限制 O(n) 意味著不準暴力法,並且在常數次的 for loop 下要完成計算。
- 禁止除法意味著每次 for loop 不能乘到每個數字。
這樣限制後逼得我們想出 Array 的每一格都是左邊所有數字的乘積乘上右邊所有乘積的方式。
要做到這種事最簡單的方法是從左到右乘一次,再從右到左乘一次,我是覺得不好想,但用代入法來看確實就是答案。
1 | class Solution { |
參考資料
leetcode/java/0238-product-of-array-except-self.java