本文主要是介绍力扣刷题-238.除自身以外数组的乘积,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
给你一个整数数组 nums
,返回 数组 answer
,其中 answer[i]
等于 nums
中除 nums[i]
之外其余各元素的乘积 。
题目数据 保证 数组 nums
之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。
请 不要使用除法,且在 O(n)
时间复杂度内完成此题
class Solution {
public: vector<int> productExceptSelf(vector<int>& nums){int n = nums.size();int m = 1, answer = 1;vector<int> ans(n,1);for (int i = 0; i < n; i++) {ans[i] = m;m *= nums[i];}
for(int j=n-1;j>=0;j--){ans[j]*=answer;answer *=nums[j];
}
return ans;}
};
首先不让用除法,也就排除都乘起来除以当前值的可能。
其次学会了vector创建数组,也就是vec<int> array(m,n)
最后代码逻辑就是先将前积算出来,并且存在ans【】中,然后再算后积,非常高明的一种策略。
这篇关于力扣刷题-238.除自身以外数组的乘积的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!