国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

構建乘積數組

2019-11-08 03:17:46
字體:
來源:轉載
供稿:網友

題目描述

給定一個數組A[0,1,…,n-1],請構建一個數組B[0,1,…,n-1],其中B中的元素B[i]=A[0]A[1]A[i-1]*A[i+1]…*A[n-1]。不能使用除法。

算法解析: 不能使用除法讓我們構建這樣一個數組B,最直觀的想法莫過于直接使用連乘。但如果每個值都用連乘來生成的話,那么時間復雜度為O(n^2),但是我們觀察B數組可以發現如下規律B[i]=A[0]A[1]A[i-1]*A[i+1]…*A[n-1];即 B[i]=(A[0]A[1]A[i-1]) 1 * (A[i+1]*…*A[n-1])也就是說將B數組的生成分為兩部分,第一部分從上到下乘出來,第二部分從下到上乘出來,時間復雜度為O(n)。

代碼如下:

public int[] multiply(int[] A) { if (A == null || A.length <= 0){ return null; } int[] B = new int[A.length]; B[0] = 1; for (int i = 1; i < A.length; i++) { B[i] = B[i - 1] * A[i - 1]; } int temp = 1; for (int i = A.length - 2; i >= 0 ; i--) { temp *= A[i + 1]; B[i] *= temp; } return B; }
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 阿巴嘎旗| 万年县| 古蔺县| 茂名市| 嘉鱼县| 新沂市| 璧山县| 柘荣县| 璧山县| 巴青县| 乡城县| 施甸县| 鄂温| 望奎县| 七台河市| 体育| 金山区| 马鞍山市| 洪泽县| 阿图什市| 湘乡市| 南充市| 玉树县| 长丰县| 乌鲁木齐市| 习水县| 中江县| 太白县| 深州市| 辛集市| 祁连县| 河津市| 芒康县| 仪陇县| 娱乐| 武隆县| 山东省| 岫岩| 花垣县| 天镇县| 舞阳县|