剑指offer-面试题66-构建乘积数组-发散思维
2024-10-08 05:08:57
/*
题目:
链接:https://www.nowcoder.com/questionTerminal/94a4d381a68b47b7a8bed86f2975db46
来源:牛客网 给定一个数组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]。不能使用除法。
思路:
C[i] = A[0]*...*A[i-1];
D[i] = A[i+1]*...*A[n-1];
B[i] = C[i]*D[i];
**/
#include<iostream>
#include<cstring>
#include<vector>
#include<algorithm>
#include<map> using namespace std; vector<int> multiply(const vector<int>& A) {
vector<int> B;
int length = A.size();
B.push_back(1);
for(int i = 1; i < length; i++){
B.push_back(B.back()*A[i-1]);
} int temp = 1;
for(int i = length-2; i >= 0; i--){
temp *= A[i+1];
B[i] *= temp;
}
return B; }
int main(){
vector<int> A={1,2,3,4,5};
vector<int> B=multiply(A);
for(int i = 0; i < B.size(); i++){
cout<<B[i]<<" ";
}
}
最新文章
- [个人论文]一种基于GPU并行计算的MD5密码解密方法
- Swift运算符
- 使用Location对象查询字符串参数
- iOS - iOS 适配
- iOS开发UI篇—Quartz2D使用(图形上下文栈)
- ccs6.0使用问题记录
- css+js 控制幻灯片效果
- PL SQL Developer 使用总结
- java 和 Python 的互调
- C#新功能--命名参数与可选参数
- 基于binlog来分析mysql的行记录修改情况(python脚本分析)
- 华为OJ之最长公共子串
- linux sudo 运行找不到java、python命令
- Oracle数据库查看表空间是否为自增的
- C#多线程和异步(三)——一些异步编程模式
- Windows完成端口与Linux epoll技术简介
- shell加密
- JavaScript学习方法
- mysql创建外链失败1005错误解决方法
- 《GPU高性能编程CUDA实战》第九章 原子性