package main import "fmt" func main() { fmt.Println(productExceptSelf([]int{1, 2, 3, 4})) } func productExceptSelf(nums []int) []int { before := make([]int, len(nums)) after := make([]int, len(nums)) result := make([]int, len(nums)) value1 := 1 value2 := 1 for i := 0; i < len(nums); i++ { if i == 0 { before[i] = 0 continue } //fmt.Println("value:", value1) value1 = nums[i-1] * value1 //fmt.Println("nums[i-1]:", nums[i-1]) before[i] = value1 } for i := len(nums) - 1; i >= 0; i-- { //fmt.Println("循环到:", nums[i]) if i == len(nums)-1 { after[i] = 0 continue } value2 *= nums[i+1] after[i] = value2 } for i := 0; i < len(nums); i++ { if i == 0 { result[i] = after[i] continue } if i == len(nums)-1 { result[i] = before[i] continue } result[i] = before[i] * after[i] } //fmt.Println(before) //fmt.Println(after) return result }