构建乘积数组
给定一个数组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]。不能使用除法。
思路:leetcode原题。先从左往右,t[i]=t[0]*……t[i-1];然后从右往左,r[i]=t[i]*r[i+1]*……*r[n-1]
1 class Solution { 2 public: 3 vector<int> multiply(const vector<int>& A) { 4 int n=A.size(); 5 vector<int> tmp(n,0); 6 vector<int> res(n,0); 7 int left=1,right=1; 8 9 if(n<1) return res; 10 for(int i=0;i<n;i++){ 11 tmp[i]=left; 12 left*=A[i]; 13 } 14 for(int i=n-1;i>=0;i--){ 15 res[i]=right*tmp[i]; 16 right*=A[i]; 17 } 18 return res; 19 } 20 };
联系方式:emhhbmdfbGlhbmcxOTkxQDEyNi5jb20=
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步