【剑指offer】构建乘积数组(数组)

版权声明:本文为原创博客,未经允许,请勿转载。 https://blog.csdn.net/u013095333/article/details/88600749

题目描述

给定一个数组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;
    }
};

猜你喜欢

转载自blog.csdn.net/u013095333/article/details/88600749