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萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章