1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
// @Title: 构建乘积数组 (构建乘积数组 LCOF)
// @Author: 15816537946@163.com
// @Date: 2022-02-22 15:02:21
// @Runtime: 24 ms
// @Memory: 9.1 MB
func constructArr(a []int) []int {
	// initialization
	tmp := 1
	b := make([]int, len(a))
	for i := range b {
		b[i] = 1
	}
	for i := 1; i < len(a); i++ {
		b[i] = b[i-1] * a[i-1] // 下三角
	}
	for i := len(a) - 2; i >= 0; i-- {
		tmp *= a[i+1] // 上三角
		b[i] *= tmp
	}

	return b

}