lintCode 50 陣列踢出元素後的乘積

2021-08-04 07:35:26 字數 861 閱讀 2564

給定乙個整數陣列a。

定義b[i] = a[0] * … * a[i-1] * a[i+1] * … * a[n-1], 計算b的時候請不要使用除法。

樣例

給出a=[1, 2, 3],返回 b為[6, 3, 2]

非常笨拙的思路,兩個for迴圈計算b[i]。

public arraylistproductexcludeitself(arraylista) 

}b.add(mult);

}return b;

}

借助兩個陣列:

long left=new long[n]; // left[i]表示:a[i]元素前所有元素的乘積

long right=new long[n]; //right[i]表示:a[i]元素後所有元素的乘積

首先計算left和right,然後 b[i]=left[i]*right[i];

注意:

left[0]=1; //a[0]元素前並沒有元素,這樣設定left[0]的值,是為了left陣列的完整性

right[n-1]=1; //同理

public arraylistproductexcludeitself(arraylista)

right[n-1]=(long)1;

for(i=n-2;i>=0;i--)

for(i=0;ileft[i]*right[i];

b.add(mult);

}

return b;

}

LintCode 50 陣列剔除元素後的乘積

給定乙個整數陣列a。定義b i a 0 a i 1 a i 1 a n 1 計算b的時候請不要使用除法。給出a 1,2,3 返回 b為 6,3,2 無記錄每個點的左右二邊的乘積即可。i從左邊往左走,j從右邊往右走,每次都是記錄的都是當前點之前的乘積。這樣就相當於跳過了當前這個點。vector lon...

50 陣列剔出元素後的乘積

原題 給定乙個整數陣列a。定義b i a 0 a i 1 a i 1 a n 1 計算b的時候請不要使用除法。您在真實的面試中是否遇到過這個題?yes樣例給出a 1,2,3 返回 b為 6,3,2 標籤 前後遍歷 1 include 2 include 3 include 4 using names...

給定乙個排序陣列,返回移除相同元素後陣列的新長度。

問題 給定乙個排序陣列,返回移除相同元素後陣列的新長度。方法一 用另乙個陣列儲存不相同的元素,核心步驟是前後比較,相等的話就讓 後面的指標向後走直到不相等 方法三 雙指標法 public class test06 system.out.print 原始陣列為 for int i str system...