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]。不能使用除法。
程序核心思想
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]构建乘积数组相关推荐
- 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 ...
- 【LeetCode】剑指 Offer 66. 构建乘积数组
[LeetCode]剑指 Offer 66. 构建乘积数组 文章目录 [LeetCode]剑指 Offer 66. 构建乘积数组 package offer;import java.util.Arra ...
- 《剑指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]*. ...
- 【算法】剑指 Offer 66. 构建乘积数组
1.概述 给定一个数组 A[0,1,-,n-1],请构建一个数组 B[0,1,-,n-1],其中 B[i] 的值是数组 A 中除了下标 i 以外的元素的积, 即 B[i]=A[0]×A[1]×-×A[ ...
- (Java 剑指 offer)构建乘积数组
文章目录 一.题目解析 二.代码一 三.代码二 四.总结 一.题目解析 给定一个数组A[0,1,...,n-1],请构建一个数组B[0,1,...,n-1],其中B中的元素 B[i]=A[0]*A[1 ...
- 《剑指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].不能使用除法. 解析:由于不能 ...
- 剑指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].不能使用除法. 解题 暴力 ...
- 剑指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 ...
- 利用指针数组计算2个3行4列矩阵的和_[剑指 Offer] 04. 二维数组中的查找
难度:简单 题目链接:剑指 Offer 04. 二维数组中的查找 题目描述: 在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数, ...
最新文章
- 关于Java的Classpath详解
- python怎样画立体图形-用python来画出高光谱遥感影像的3D立体图
- 20080826 - Delphi 2009 来了
- C# Soap调WebService
- java面试必背知识点
- openwrt 需要高级浏览器_OpenWrt的新(shi)奇(yong)玩法
- 十分钟计算机说课稿,足球十分钟说课稿范文(精选3篇)
- linux订阅软件包,安装 Manjaro Linux 后必做的 6 件事 | Linux 中国
- 【深度学习】卷积计算与训练模型的几种方法
- chrome 迅雷下载 支持插件, 让chrome支持迅雷
- 程序员简单实用的桌面壁纸
- 多变量微积分笔记5——梯度与方向导数
- 多功能芯片——GSV2002
- Hybrid LSTM and Encoder-Decoder Architecturefor Detection of Image Forgeries的复现梳理
- word可以画神经网络图吗,如何画神经网络结构图
- ubuntu16.04查看opencv安装路径以及版本号
- storyboard 苹果启动图_iOS平台自定义storyboard启动界面
- 说说微信红包算法,为什么你总是抢的那么少?
- FPGA中LUT设计
- 资深JAVA讲师推荐的JAVA学习顺序
热门文章
- 避免使用GroupByKey
- MYSQL Too many connections错误的解决办法
- 多线程中的线程安全问题
- git拉取tag代码_10年经验17张图带你进入gitflow企业项目代码版本管理的最佳实践...
- 【NLP】毕设学习笔记(一):词袋模型、主题模型、词嵌入
- 【pytest】Hook 方法之 pytest_addoption :注册命令行参数
- android 输入金额,EditText输入金额保留两位小数点
- python教程1003无标题_OSError:[WinError 10038]试图对非s的对象执行操作
- mysql盲注绕过_盲注 绕过技巧
- t-sql查询where in_产品操作MySQL第7篇 – 运算符 - IN