剑指 Offer 66. 构建乘积数组
和力扣238. 除自身以外数组的乘积相同
//时间On,空间O1
func productExceptSelf(nums []int) []int {
if len(nums) <= 1 {
return nums
}
n := len(nums)
res := make([]int, n)
left, right := make([]int, n), make([]int, n)
left[0], right[n - 1] = 1, 1
for i := 1; i < n; i++ { //左边到i的数的数组
left[i] = left[i-1] * nums[i-1]
}
for i := n - 2; i >= 0; i-- { //右边到i的数的数组
right[i] = right[i+1] * nums[i+1]
}
for i := 0; i < n; i++ { //左右相乘,即为目标数组的值
res[i] = left[i] * right[i]
}
return res
}