本文主要是介绍【前缀积】Leetcode 除自身以外数组的乘积,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目解析
238. 除自身以外数组的乘积
算法讲解
我们可以使用两个空间保存当前位置的左边积和右边积,需要注意的地方初始的dp表需要初始化为1,如果是0则无法得到结果,因为此处是乘法
class Solution {
public:vector<int> productExceptSelf(vector<int>& nums) {//前缀积 和 后缀积vector<int>ret;vector<int>l_dp(nums.size()+1, 1);vector<int>r_dp(nums.size()+1, 1);//填表for(int i = 1; i < nums.size(); i++)l_dp[i] = l_dp[i-1] * nums[i-1];for(int i = nums.size()-2; i>= 0; i--)r_dp[i] = r_dp[i+1] * nums[i+1];//返回结果for(int i = 0; i < nums.size(); i++)ret.push_back(l_dp[i] * r_dp[i]);return ret;}
};
这篇关于【前缀积】Leetcode 除自身以外数组的乘积的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!