思路:
1:乘积累加
2. 累加之后统一进位
package leetcode
func bigNumberMultiply(arr1, arr2 []int) []int {
result := make([]int, 0)
k := 0
for i := len(arr2) - 1; i >= 0; i-- {
tmp := make([]int, 0)
carry := 0
for j := len(arr1) - 1; j >= 0; j-- {
num := arr2[i]*arr1[j] + carry
val := num % 10
carry = num / 10
tmp = append([]int{val}, tmp...)
}
if carry > 0 {
tmp = append([]int{carry}, tmp...)
}
for m := 0; m < k; m++ {
tmp = append(tmp, 0)
}
result = add(result, tmp)
k++
}
carry := 0
for i := len(result) - 1; i >= 0; i-- {
num := result[i] + carry
val := num % 10
carry = num / 10
result[i] = val
}
if carry > 0 {
result = append([]int{carry}, result...)
}
return result
}
func add(arr1, arr2 []int) []int {
var max, min []int
if len(arr1) < len(arr2) {
max = arr2
min = arr1
} else {
max = arr1
min = arr2
}
for i, j := len(min)-1, len(max)-1; i >= 0; i-- {
max[j] += min[i]
j--
}
return max
}