标签:... right 乘积 int 构建 数组 JZ51 size
构建乘积数组
给定一个数组A[0,1,...,n-1],请构建一个数组B[0,1,...,n-1],其中B中的元素B[i]=A[0]*A[1]*...*A[i-1]*A[i+1]*...*A[n-1]。不能使用除法。 收获:先把公式想清楚了再编程序就会思路清晰,写程序写的快。b[0] | 1 | A[1] | A[2] | A[n - 1] |
b[1] | A[0] | 1 | A[2] | A[n - 1] |
....... | A[0] | A[1] | A[2] | A[n - 1] |
b[n - 2] | A[0] | A[1] | 1 | A[n - 1] |
b[n - 1] | A[0] | A[1] | A[2] | 1 |
B[i]=A[0]*A[1]*...*A[i-1]*A[i+1]*...*A[n-1]
从左到右算B[i]=A[0]*A[1]*...*A[i-1]
从右到左算B[i]*=A[i+1]*...*A[n-1]
func multiply(a []int) []int { if len(a) <= 1 { return a } size := len(a) left, right := make([]int, size), make([]int, size) left[0] = 1 for i := 1; i < size; i++{ left[i] = left[i - 1] * a[i - 1] } right[size - 1] = 1 for i := size - 2; i >= 0; i--{ right[i] = right[i + 1] * a[i + 1] } b := make([]int, size) for i := 0; i < size; i++{ b[i] = left[i] * right[i] } return b }
标签:...,right,乘积,int,构建,数组,JZ51,size 来源: https://www.cnblogs.com/dingxiaoqiang/p/14642188.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。