Files
2025-08-22 04:31:58 +08:00

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
}