摘要:題目描述給定一個數組請構建一個數組其中中的元素。思路代碼注意特殊設置數組和的初始值需要注意的就是兩個循環的邊界條件
題目描述
給定一個數組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]。不能使用除法。
思路 代碼import Strategy.Strategy; import java.lang.reflect.Array; import java.util.Arrays; public class MultiArr { public static void main(String[] args){ MultiArr multiArr = new MultiArr(); int[] a = {1, 2, 3,4,5}; // int[] a = {1,2}; /*int[] a = {1, 2, 3,4,5,6}; int[] a = {1, 2, 3,4,5,6};*/ int[] multiply = multiArr.multiply(a); System.out.println(Arrays.toString(multiply)); } public int[] multiply(int[] A) { //注意特殊case if(A.length == 0 || A == null)return A; if(A.length == 1) return A; int len = A.length; int[] B = new int[len]; int[] C = new int[len]; //設置數組C和D的初始值 C[0] = 1; C[1] = A[0]; int[] D = new int[len]; D[len - 1] = 1; D[len - 2] = A[len - 1]; //需要注意的就是兩個for循環的邊界條件 for(int i = 1; i < len - 1; i++){ C[i + 1] = C[i ] * A[i]; } for(int i = len - 2; i >= 0; i--){ D[i] = D[i+1] * A[i+1]; } for(int i = 0; i < len; i++){ B[i] = C[i] * D[i]; } return B; } }
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/74955.html
摘要:動態規劃復雜度時間空間思路分析出自身以外數組乘積的性質,它實際上是自己左邊左右數的乘積,乘上自己右邊所有數的乘積。所以我們可以用一個數組來表示第個數字前面數的乘積,這樣。同理,我們可以反向遍歷一遍生成另一個數組。 Product of Array Except Self Given an array of n integers where n > 1, nums, return an...
摘要:題目乘積最大子序列給定一個整數數組,找出一個序列中乘積最大的連續子序列該序列至少包含一個數。示例輸入輸出解釋結果不能為因為不是子數組。當大于時如果,,如果,,時間復雜度和空間復雜度均為,其中是數組中的元素個數。動態規劃法參考自 題目 乘積最大子序列 給定一個整數數組 nums ,找出一個序列中乘積最大的連續子序列(該序列至少包含一個數)。 示例 1: 輸入: [2,3,-2,4]輸出:...
摘要:題目要求從一個整數數組中找到一個子數組,該子數組中的所有元素的乘積最大。比如數組的最大乘積子數組為思路與代碼這題目考察了動態編程的思想。至于為什么還要比較,是因為如果是一個負數的,那么之前的最小乘積在這里可能就成為了最大的乘積了。 題目要求 Find the contiguous subarray within an array (containing at least one num...
閱讀 3172·2021-11-19 09:40
閱讀 3663·2021-11-16 11:52
閱讀 2991·2021-11-11 16:55
閱讀 3189·2019-08-30 15:55
閱讀 1192·2019-08-30 13:08
閱讀 1666·2019-08-29 17:03
閱讀 3022·2019-08-29 16:19
閱讀 2588·2019-08-29 13:43