博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
剑指 Offer 66. 构建乘积数组
阅读量:4034 次
发布时间:2019-05-24

本文共 893 字,大约阅读时间需要 2 分钟。

题目描述

给定一个数组 A[0,1,…,n-1],请构建一个数组 B[0,1,…,n-1],其中 B[i] 的值是数组 A 中除了下标 i 以外的元素的积, 即 B[i]=A[0]×A[1]×…×A[i-1]×A[i+1]×…×A[n-1]。不能使用除法。

示例:

输入: [1,2,3,4,5]

输出: [120,60,40,30,24]

提示:

所有元素乘积之和不会溢出 32 位整数

a.length <= 100000

来源:力扣(LeetCode)

链接:https://leetcode-cn.com/problems/gou-jian-cheng-ji-shu-zu-lcof
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

Java

class Solution {
public int[] constructArr(int[] a) {
//利用矩阵, 每一行表示A[0,....,n-1],每一行得第i个元素设为1,则b[i]为每一行的元素和 //求法: 将每一行分为两部分 C[i]=A[0]****A[i-1,],D[i]=A[i+1]***A[n-1] //递推公式: // 矩阵从上至下求:C[i]==C[i-1]* A[i-1] // 矩阵从下至上求:D[i]==D[i+1]* A[i+1] if(a==null|| a.length ==0) return new int[0]; int [] b=new int[a.length]; //从上至下填 b[0]=1; for(int i=1;i
=0;j--){
temp*=a[j+1]; b[j]*=temp; } return b; }}
你可能感兴趣的文章
python append 与浅拷贝
查看>>
Matlab与CUDA C的混合编程配置出现的问题及解决方案
查看>>
python自动化工具之pywinauto(零)
查看>>
python一句话之利用文件对话框获取文件路径
查看>>
PaperDownloader——文献命名6起来
查看>>
PaperDownloader 1.5.1——更加人性化的文献下载命名解决方案
查看>>
如何将PaperDownloader下载的文献存放到任意位置
查看>>
C/C++中关于动态生成一维数组和二维数组的学习
查看>>
JVM最简生存指南
查看>>
漂亮的代码,糟糕的行为——解决Java运行时的内存问题
查看>>
Java的对象驻留
查看>>
logback高级特性使用(二) 自定义Pattern模板
查看>>
JVM并发机制探讨—内存模型、内存可见性和指令重排序
查看>>
可扩展、高可用服务网络设计方案
查看>>
如何构建高扩展性网站
查看>>
微服务架构的设计模式
查看>>
持续可用与CAP理论 – 一个系统开发者的观点
查看>>
nginx+tomcat+memcached (msm)实现 session同步复制
查看>>
c++字符数组和字符指针区别以及str***函数
查看>>
c++类的操作符重载注意事项
查看>>