53 lines
912 B
Go
53 lines
912 B
Go
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
|
|
}
|