题目

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

程序核心思想

image.png

这个题目是一个找规律的题目。构建两个辅助数组C和D来进行计算。

C数组从左边开始,一直计算到1(当i=j的时候不乘,就可以看成是乘以1)

D数组从右边开始,一直计算到1

并且C[i]等于上一个(C[i-1])×(i-1),同理,D从下往上计算(也是从等于1的开始),并且D的索引与C一致,因为后面计算B[i]的时候,用C[i]*D[i],即D[i]等于下一个(D[i+1])×(i+1).

这个规律写三行就看出来了。

Tips

要记得先初始化等于1的C和D哦。

代码

import java.util.ArrayList;

public class Solution {

public int[] multiply(int[] A) {

int[] B = new int[A.length];

int[] C = new int[A.length];

int[] D = new int[A.length];

C[0] = 1;

D[A.length - 1] = 1;

for(int i = 1; i < A.length; i++){

C[i] = C[i - 1] * A[i - 1];

}

for(int i = A.length - 2; i >= 0; i--){

D[i] = D[i + 1] * A[i + 1];

}

for(int i = 0; i < A.length; i++){

B[i] = C[i] * D[i];

}

return B;

}

}

import java.util.ArrayList;

public class Solution {

public int[] multiply(int[] A) {

if(A.length == 0) return null;

int[] B = new int[A.length];

for(int i = 0; i < A.length; i++){

B[i] = 1;

}

for(int i = 0; i < A.length; i++){

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

if(i != j){

if(A[j] == 0){

B[i] = 0;

break;

}else{

B[i] *= A[j];

}

}else{

continue;

}

}

}

return B;

}

}

java单个数组求积_[剑指offer][Java]构建乘积数组相关推荐

  1. opencv计算两数组的乘积_#剑指Offer#12. 构建乘积数组

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

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

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

  3. 《剑指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]*. ...

  4. 【算法】剑指 Offer 66. 构建乘积数组

    1.概述 给定一个数组 A[0,1,-,n-1],请构建一个数组 B[0,1,-,n-1],其中 B[i] 的值是数组 A 中除了下标 i 以外的元素的积, 即 B[i]=A[0]×A[1]×-×A[ ...

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

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

  6. 《剑指offer》构建乘积数组

    题目:给定一个数组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:构建乘积数组

    题目描述 给定一个数组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. 剑指offer之构建乘积数组

    题目描述 给定一个数组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[i]=A ...

  9. 利用指针数组计算2个3行4列矩阵的和_[剑指 Offer] 04. 二维数组中的查找

    难度:简单 题目链接:剑指 Offer 04. 二维数组中的查找 题目描述: 在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数, ...

最新文章

  1. 关于Java的Classpath详解
  2. python怎样画立体图形-用python来画出高光谱遥感影像的3D立体图
  3. 20080826 - Delphi 2009 来了
  4. C# Soap调WebService
  5. java面试必背知识点
  6. openwrt 需要高级浏览器_OpenWrt的新(shi)奇(yong)玩法
  7. 十分钟计算机说课稿,足球十分钟说课稿范文(精选3篇)
  8. linux订阅软件包,安装 Manjaro Linux 后必做的 6 件事 | Linux 中国
  9. 【深度学习】卷积计算与训练模型的几种方法
  10. chrome 迅雷下载 支持插件, 让chrome支持迅雷
  11. 程序员简单实用的桌面壁纸
  12. 多变量微积分笔记5——梯度与方向导数
  13. 多功能芯片——GSV2002
  14. Hybrid LSTM and Encoder-Decoder Architecturefor Detection of Image Forgeries的复现梳理
  15. word可以画神经网络图吗,如何画神经网络结构图
  16. ubuntu16.04查看opencv安装路径以及版本号
  17. storyboard 苹果启动图_iOS平台自定义storyboard启动界面
  18. 说说微信红包算法,为什么你总是抢的那么少?
  19. FPGA中LUT设计
  20. 资深JAVA讲师推荐的JAVA学习顺序

热门文章

  1. 避免使用GroupByKey
  2. MYSQL Too many connections错误的解决办法
  3. 多线程中的线程安全问题
  4. git拉取tag代码_10年经验17张图带你进入gitflow企业项目代码版本管理的最佳实践...
  5. 【NLP】毕设学习笔记(一):词袋模型、主题模型、词嵌入
  6. 【pytest】Hook 方法之 pytest_addoption :注册命令行参数
  7. android 输入金额,EditText输入金额保留两位小数点
  8. python教程1003无标题_OSError:[WinError 10038]试图对非s的对象执行操作
  9. mysql盲注绕过_盲注 绕过技巧
  10. t-sql查询where in_产品操作MySQL第7篇 – 运算符 - IN