(51)のオファーを受賞

タイトル:所与のアレイA [0,1、...、N- 1]、 配列B構築してください[0,1、...を、N- 1]、 Bが要素B [I] = Aであり、ここで、[0 ] [1] ... A * [1-I] A [I + 1] ... * A [N - 1]。あなたは分裂を使用することはできません。

アイデア:
安全思考を証明するために、B [I]の値は、図の行列の各列の積と考えることができます。乗法容量の下の三角を得ることができ、ボトムアップからのトライアングルは、乗算絶えずあります。私たちの思考が偶数の最初のカウント、下の三角形で、非常に明確であるので、我々は最初の[i]はBの一部を計算して、三角形の分布によって反転し、も考慮に他の部分を取ります。

ここに画像を挿入説明

	public int[] multiply (int []A) {
		int length = A.length;
		int[] B = new int[length];
		if (length != 0) {
			B[0] = 1 ;
			//计算下三角连乘
			for (int i = 0; i < length; i++) {
				B[i] = B[i-1] * A[i-1];
			}
			int temp = 1;
			//计算下三角
			for (int j = length-2; j >= 0; j--) {
				temp *= A[j+1];
				B[j] *= temp;
			}
		}
		return B;
	}
公開された52元の記事 ウォンの賞賛0 ビュー453

おすすめ

転載: blog.csdn.net/weixin_46108108/article/details/104218835
おすすめ