|
构建乘积数组给定一个数组A[0,1,...,n-1],请构建一个数组B[0,其中B中的元素B[i]=A[0]*A[1]*...*A[i-1]*A[i+1]*...*A[n-1]。不能使用除法。
1. 这题的意思是 B数组的元素是A数组中所有元素的乘积,但是要排除掉当前元素2. A数组在i元素左右分成两部分,分别相乘3. left数组是 A[0]...A[n-1],right数组是A[1]...A[n]4. 组合出新的数组
<div class="cnblogs_code">
=(1,2,3,4 multiply(=(=
=[0]=1(=1;<;++[]=[-1]*[-1 </span><span style="color: #008000">//</span><span style="color: #008000">2. 组合右边数组</span>
<span style="color: #800080">$right</span>=<span style="color: #0000ff">array</span><span style="color: #000000">();
</span><span style="color: #800080">$right</span>[<span style="color: #800080">$len</span>-1]=1<span style="color: #000000">;
</span><span style="color: #0000ff">for</span>(<span style="color: #800080">$j</span>=<span style="color: #800080">$len</span>-2;<span style="color: #800080">$j</span>>=0;<span style="color: #800080">$j</span>--<span style="color: #000000">){
</span><span style="color: #800080">$right</span>[<span style="color: #800080">$j</span>]=<span style="color: #800080">$right</span>[<span style="color: #800080">$j</span>+1]*<span style="color: #800080">$numbers</span>[<span style="color: #800080">$j</span>+1<span style="color: #000000">];
}
</span><span style="color: #008000">//</span><span style="color: #008000">3. 组合新数组,整好可以实现A[0]*A[i-1]*A[i+1]*A[n-1]排除当前i元素</span>
<span style="color: #0000ff">for</span>(<span style="color: #800080">$i</span>=0;<span style="color: #800080">$i</span><<span style="color: #800080">$len</span>;<span style="color: #800080">$i</span>++<span style="color: #000000">){
</span><span style="color: #800080">$res</span>[<span style="color: #800080">$i</span>]=<span style="color: #800080">$left</span>[<span style="color: #800080">$i</span>]*<span style="color: #800080">$right</span>[<span style="color: #800080">$i</span><span style="color: #000000">];
}
</span><span style="color: #0000ff">return</span> <span style="color: #800080">$res</span><span style="color: #000000">;
} (编辑:安卓应用网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|