主页 > 电脑硬件  > 

算法与数据结构(除自身以外数组的乘积)

算法与数据结构(除自身以外数组的乘积)
题目

思路

这个题要求除自身以外其他元素的乘积,我们可以将数组中的数分为两部分,一部分是它左边的数,另一部分是它右边的数。

先求每个数左边所有数的乘积,保存到answer数组中,再求右边数的乘积,每个与answer[i]相乘,answer数据即为最后的结果

解题过程

首先我们将answer[0]赋为1,因为索引为0的元素左边元素乘积为0,当前元素左边数的乘积是前一个元素值和前一个元素左边元素乘积相乘。

然后不断求右边的元素值,与answer[i]相乘,即可得到想要的结果。

代码 class Solution { public: vector<int> productExceptSelf(vector<int>& nums) { //用answer[i]代表左侧元素的乘积 int length = nums.size(); vector<int> answer(length); answer[0]=1; //索引为0的左侧没有元素,所以为1 for(int i=1;i<length;i++) { answer[i] = nums[i-1] * answer[i-1]; } //用R代表右侧元素的乘积 int R=1; for(int i=length-1;i>=0;i--) { answer[i] = answer[i]*R; R *= nums[i]; } return answer; } };

标签:

算法与数据结构(除自身以外数组的乘积)由讯客互联电脑硬件栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“算法与数据结构(除自身以外数组的乘积)