当前位置:   article > 正文

力扣-238题 除自身以外数组的乘积(C++)- 数学规律+有价值_力扣238c++

力扣238c++

题目链接:https://leetcode-cn.com/problems/product-of-array-except-self/
题目如下:
在这里插入图片描述

class Solution {
public:
    vector<int> productExceptSelf(vector<int>& nums) {
        //原数组:       [1       2       3       4]
        //左部分的乘积:   1       1      1*2    1*2*3
        //右部分的乘积: 2*3*4    3*4      4      1
        //结果:        1*2*3*4  1*3*4   1*2*4  1*2*3*1
        //结论:当前位置的结果为它的 左部分的乘积 * 右部分的乘积

        int n=nums.size();
        int left=1,right=1;//left:从左边开始累乘,right:从右边开始累乘
        vector<int> result(n,1);

        for(int i=0;i<n;++i){
            result[i]=result[i]*left;
            left=left*nums[i];//左累乘

            result[n-1-i]=result[n-1-i]*right;
            right=right*nums[n-1-i];//右累乘
        }

        return result;
    }
};
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/酷酷是懒虫/article/detail/818509
推荐阅读
相关标签
  

闽ICP备14008679号