本文主要是介绍【剑指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]。不能使用除法。
链接
https://www.nowcoder.com/practice/94a4d381a68b47b7a8bed86f2975db46?tpId=13&tqId=11204&rp=1&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking
代码
class Solution {
public:vector<int> multiply(const vector<int>& A) {vector<int> first;vector<int> last;vector<int> ans;if(A.size() == 0){return ans;} int temp = 1;for(int i = 0; i < A.size(); i++){temp = temp * A[i];first.push_back(temp);}temp = 1;for(int i = A.size() - 1; i >= 0; i--){temp = temp * A[i];last.push_back(temp);}for(int i = 0; i < A.size(); i++){if(i == 0){ans.push_back(last[A.size() - 2]);}else if(i == A.size() - 1){ans.push_back(first[A.size() - 2]);}else{ans.push_back(first[i-1] * last[A.size() - 2 - i]);}}return ans;}
};
这篇关于【剑指offer】构建乘积数组(数组)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!