剑指offer——构建乘积数组
2016-07-20 14:56
369 查看
题目描述:
给定一个数组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]。不能使用除法。思路:
把前半部分与后半部分保存到两个不同的数组中,用front[i]表示从A[0]…到A[i - 1]的值,用 back[i]表示从A[i + 1]…到A[n - 1]的值,循环一次,将结果保存在两个数组中,再遍历一次相乘即可得到最后结果。算法实现:
import java.util.ArrayList; public class Solution { public int[] multiply(int[] A) { int n = A.length; //front[i]就是从A[0]...到A[i - 1]的值 int[] front = new int ; if(n<=1) return front; /* back[i]就是从A[i + 1]...到A[n - 1]的值 * back数组的第一位从最后一位开始,所以back[n - 1]=1 */ int[] back = new int ; front[0] = back[n-1] = 1; //分别计算前半部分和后半部分的值,并分别将结果保存在front与back数组中 for(int i=1;i<n;i++){ front[i] = front[i-1]*A[i-1]; back[n-i-1] = back[n-i]*A[n-i]; } //将两个计算结果两次相乘得到最后的结果 for(int i=0;i<n;i++){ front[i] *=back[i]; } //返回front数组即为所求 return front; } }
相关文章推荐
- css selector
- jQuery on()给动态元素绑定事件
- JS获取GET参数
- js 插件 弹出deom 自身属性值
- css中的border-image的用法
- java jar 包导出报classnodefloadexception
- Html之 textarea 控件
- ajax请求json数据
- js的btoa 、atob
- js-动态添加li、option,并且添加其点击事件
- Jquery 获取input是否被选中,并修改状态!
- jquery获得下拉列表选中值和文本
- Tegra TX1 安装配置 + caffe run
- js 自己容易搞混的笔记查询
- Caffe & Theano安装教程——ubuntu16.04系统
- jquery通过输入框实时查找列表值
- 汇总常用的jQuery操作Table tr td方法
- Drupal做个人博客,阿里云Ubuntu下安装Git,Composer, Drush,nodejs
- HTML 保存图片到本地
- jsp 获取url的参数