238. Product of Array Except
Given an array
nums
of n integers where n>1, return an arrayoutput
such thatoutput[i]
is equal to the product of all the elemetns ofnums
exceptnums[i]
题目说的是, 给一个array
, 要求返回另外一个数组. 要求是, 返回的数组里面的是原数组其他数的乘积.
比如说:[1, 2, 3, 4]
是输入, 那么输出是 [24, 12, 8, 6]
. 因为 24=2×3×4, 12=1×3×4.
思路
要解这道题, 可以运用两个指针. 从前往后扫, 得出 0 到 i−1 的乘积. 从后往前扫, 得出 i+1 到 最后一位的乘积. 然后将两次扫到的结果相乘.
这里的输入还是 [1, 2, 3, 4]
.
首先, 从前往后扫. 得出 f = [1, 1, 2, 6]
. 然后再从后往前扫, 得出 b =[24, 12, 4, 1]
. 然后将两个数组相乘, 就是题目要求的结果.
仔细看两次的扫描结果, 很容易发现, 当i=2的时候, f[2] = nums[0] * nums[1]
, b[2] = nums[3] * 1
. 他们相乘的结果刚好是 nums[0] * nums[1] * nums[3]
.
Code
1 | def productExceptSelf(nums): |
EOF