LeetCode 除自身以外数组的乘积

记录:今天是Datawhale打卡活动的最后一天,坚持了七天,其实坚持七天没什么值得炫耀的,还有些大牛坚持了一年或者两年,相比之下,连车尾灯都见不着。刷Leetcode也许会成为以后每一天的任务,刷题写博客记录轨迹。其实我很爱写笔记的,哈哈,只不过之前一直在OneNote上写,写了半年多了,大概有快一百篇笔记了吧(hhh,我是OneNote的粉)。Datawhale是个好的学习组织,崇尚开源精神,大家以后可以继续加入。做技术,开源是一件很令人敬佩的事情,小白的我目前技术还不行,没能给开源界带来奉献   (ㄒoㄒ)//


题目:https://leetcode-cn.com/problems/product-of-array-except-self/

思路

  • 定义一个输出数组(题目中这样表示 出于对空间复杂度分析的目的,输出数组不被视为额外空间),先从输出数组1号下表开始,把它之前的 所有元素乘积的值作为该位置的值,一次遍历到尾,每个输出数组里都存着它之前所有元素的乘积。接着从尾部开始向前遍历,我们从倒数第二个元素开始,在数组的基础上乘以它之后的所有元素的值,遍历到头部。结束,这样一来,每个输出数组都满足它之前所有的元素乘以它之后所有的元素。
 vector<int> productExceptSelf(vector<int>& nums) {
   if( nums.size() <= 0 ) return vector<int>();
   vector<int>vec( nums.size(), 1 );
   for( int i = 1; i < nums.size(); ++i )
        vec[ i ] = nums[ i - 1 ] * vec[ i - 1 ]; // 该下标之前的所有元素的乘积
        
    for( int i = nums.size() - 2, temp = 1; i >= 0; --i ) {        
        temp *= nums[ i + 1 ]; 
        vec[ i ] *= temp; //在原来的基础上乘以该下标之后所有的乘积
    }
    return vec;    
}

 

转载于:https://www.cnblogs.com/sumelt/p/10479943.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值