給定乙個整數陣列a。非常笨拙的思路,兩個for迴圈計算b[i]。定義b[i] = a[0] * … * a[i-1] * a[i+1] * … * a[n-1], 計算b的時候請不要使用除法。
樣例
給出a=[1, 2, 3],返回 b為[6, 3, 2]
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...