剑指offer-构建乘积数组

    xiaoxiao2023-10-15  154

    45.构建乘积数组

    题目内容:

    代码及思路:

    因为B[i]=A[0]*A[1]*...*A[i-1]*A[i+1]*...*A[n-1],所以可以设定两个数组C和D,C=A[0]*A[1]*...*A[i-1],D=A[n-1]*...*A[i+1].最后再根据B=C*D即可得到

    #include<iostream> #include<vector> using namespace std; class Solution { public: vector<int> multiply(vector<int>& A) { int n = A.size(); //对C和D数组进行初始化 vector<int> C(n,1); //初始化n个1 vector<int> D(n,1); vector<int> res; //C=A[0]*A[1]*...*A[i-1],D=A[n-1]*...*A[i+1] for (int i = 1; i < n; i++) { C[i] = C[i - 1] * A[i-1]; } for (int j = n - 2; j >= 0; j--) { D[j] = D[j + 1] * A[j + 1]; } for (int i = 0; i < n; i++) { res[i] = C[i] * D[i]; } return res; } }; void main() { Solution* object = new Solution; vector<int> numbers; int num; char ch; do { cin >> num; numbers.push_back(num); cin.get(ch); } while (ch == ','); vector<int> res; res = object->multiply(numbers); for (int i = 0; i < res.size(); i++) { cout << res[i] << endl; } }

     

    最新回复(0)