题目:给定一个数组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]=A[1]*A[2]*A[3]*.......A[n-1]

B[1]=A[0]*A[2]*A[3]*.......A[n-1]

B[2]=A0]*A[1]*A[3]*A[4]*.......A[n-1]

B[n]=A[0]*A[1]*A[2]*A[3]*.......A[n-1]

发现每一项只是缺少本身 当成1即可

最直接的做法就是直接乘  :while(i!=length){

int temp =A[i]

B[i]=1 A[i]=1

for(int j=0;j<length;j++){

B[i]=B[i]*A[j];

}

A[j]=temp;i++

}

方法二:思路一样 只是减少了重复的计算

/** 给定一个数组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]。不能使用除法。* */
public class multiply1 {public int[] multiply(int[] A) {int length=A.length;int [] B=new int[length];if(length!=0){B[0]=1;//上三角for(int i=1;i<length;i++){B[i]=B[i-1]*A[i-1];}int temp=1;//下三角for(int j=length-2;j>=0;j--){temp*=A[j+1];B[j]*=temp;}}return B;}
}

T48:构建乘积数组(Java)相关推荐

  1. 《剑指offer》-- 构建乘积数组、求1+2+3+...+n、不用加减乘除做加法、包含min函数的栈、用两个栈实现队列

    一.构建乘积数组: 1.题目: 给定一个数组A[0,1,...,n-1],请构建一个数组B[0,1,...,n-1],其中B中的元素B[i]=A[0]*A[1]*...*A[i-1]*A[i+1]*. ...

  2. 【LeetCode】剑指 Offer 66. 构建乘积数组

    [LeetCode]剑指 Offer 66. 构建乘积数组 文章目录 [LeetCode]剑指 Offer 66. 构建乘积数组 package offer;import java.util.Arra ...

  3. 剑指offer——面试题52:构建乘积数组

    剑指offer--面试题52:构建乘积数组 Solution1: 自己想出来的笨蛋算法! class Solution { public:vector<int> multiply(cons ...

  4. 剑指Offer对答如流系列 - 构建乘积数组

    文章目录 面试题66:构建乘积数组 一.题目描述 二.问题分析 三.问题解答 面试题66:构建乘积数组 一.题目描述 给定一个数组A[0, 1, -, n-1],请构建一个数组B[0, 1, -, n ...

  5. 构建乘积数组[前后缀优化]

    前后缀 前言 一.构建乘积数组 二.前后缀 1.前后缀直接相乘 2.状态压缩 总结 参考文献 前言 前后缀是一种典型的空间换时间的做法,通过记录每个位置的状态来达到减少计算,而且当有前后遍历时,还可以 ...

  6. 剑指offer66之构建乘积数组(java)

    题目描述 给定一个数组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].不能使用除法. 解题思路 ...

  7. 【剑指offer】面试题66:构建乘积数组(Java)

    给定一个数组 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].不能使用除法. 示 ...

  8. java单个数组求积_[剑指offer][Java]构建乘积数组

    题目 给定一个数组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].不能使用除法. 程 ...

  9. (Java 剑指 offer)构建乘积数组

    文章目录 一.题目解析 二.代码一 三.代码二 四.总结 一.题目解析 给定一个数组A[0,1,...,n-1],请构建一个数组B[0,1,...,n-1],其中B中的元素 B[i]=A[0]*A[1 ...

最新文章

  1. spring教程--事务管理
  2. 欢乐ssl暑假赛【2019.8.6】
  3. 微服务拆分需要考虑的必要因素与坚持原则
  4. SSH整合之四(页面逻辑的实现)
  5. 【参数辨识】六关节机械臂动力学参数辨识(上)
  6. C语言简明教程--指针5
  7. VC知识库BLOG-技术,非技术......
  8. python文件传输库,利用python库在局域网内传输文件的方法
  9. GB2312、GB18030、GBK、UNICODE、BIG5之间兼容关系
  10. OptiX OSN3500
  11. 设计模式10——状态模式
  12. IT人生 需要指引[转]
  13. C++ 类的交叉引用
  14. web server and web service
  15. 商业研究(9):入口思维(刚需、频次、免费、变现)
  16. MTK平台双卡区分SIM卡1和SIM卡2来电通知
  17. DGL RDKit | 基于Attentive FP的分子性质线性模型
  18. java http客户端实现_Java基于Socket实现HTTP下载客户端
  19. python scipy.misc.imread_scipy.misc.imread()函数解析
  20. photoshopCS3 不能即时刷新操作的解决方法

热门文章

  1. Win10:Windows找不到文件‘Gpedit.msc‘。请确定文件名是否正确后,再试一次。
  2. 一种在C语言中用 System V ucontext 实现的协程切换
  3. 《人工智能与放射科学的未来》学习笔记
  4. 微信小程序糟心开发过程
  5. 安装程序配置服务器失败
  6. CocosCreator特效系列之素描效果
  7. 程序员『天梯排行榜』
  8. CERC 2014 Outer space invaders (hnuoj13405)
  9. Chinfa DRA480-24A
  10. ipaddress库:Python中网络地址的处理