LeetCode除自身以外数组的乘积

心已赠人 2023-12-06 07:13 258阅读 0赞

一、题目

给定长度为 n 的整数数组 nums,其中 n > 1,返回输出数组 output ,其中 output[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积。

二、思路

思路:利用2个辅助数组去做。一个保存顺序遍历的乘积,一个保存逆序的乘积(可以一次遍历完成)。

ins[0,0,0,0]

ret[4,4,4,4]

计算后:

ins[1,2,6,24]

ret[24,24,12,4]

三、实现

  1. class Solution {
  2. public:
  3. vector<int> productExceptSelf(vector<int>& nums) {
  4. int len=nums.size();
  5. if(len<=0)return nums;
  6. vector<int>ins(len,nums[0]);
  7. vector<int>ret(len,nums[len-1]);
  8. int mult1=nums[0];
  9. int mult2=nums[len-1];
  10. for(int i=1;i<len;i++)
  11. {
  12. mult1*=nums[i];
  13. mult2*=nums[len-i-1];
  14. ins[i]=mult1;
  15. ret[len-i-1]=mult2;
  16. }
  17. ret[0]=ret[1];
  18. for(int i=1;i<len-1;i++)
  19. {
  20. ret[i]=ins[i-1]*ret[i+1];
  21. }
  22. ret[len-1]=ins[len-2];
  23. return ret;
  24. }
  25. };

发表评论

表情:
评论列表 (有 0 条评论,258人围观)

还没有评论,来说两句吧...

相关阅读