Product of Array except self | leetcode

思路

simple的方法就是使用除法,先得出整个数组的元素乘积(注意越界),然后每位除以该位元素,就能够得到结果。但是题目要求是不能使用除法,而且复杂度要求为O(N). 那么我们可以这么做,先从头到尾扫一边,得到前面所有元素的乘积,第一位设置为1,这样,最后一个数是满足题意的。其他还需要继续相乘,所以我们这次从尾开始扫一边,这样就能得到题的结果了。下面是实现代码:

vector<int> productOfArray(vector<int>& nums)
{
    int n=nums.size();
    vector<int> res(n,1);
    for(int i=1;i<n;++i)
        res[i]=res[i-1]*nums[i-1];
    int right=1;
    for(int i=n-1;i>=0;--i){
        res[i]*=right;
        right*=nums[i];
    }
    return res;
}
发布了77 篇原创文章 · 获赞 23 · 访问量 7万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章