1. 程式人生 > 其它 >【Lintcode】1415. Residual Product

【Lintcode】1415. Residual Product

技術標籤:# 陣列、連結串列與模擬leetcode演算法

題目地址:

https://www.lintcode.com/problem/residual-product/description

給定一個數組 A A A,返回一個新陣列 B B B,使得 B [ i ] = ∏ j ≠ i A [ j ] B[i]=\prod_{j\ne i}A[j] B[i]=j=iA[j]。如果 A A A長度是 1 1 1則返回零陣列。

參考https://blog.csdn.net/qq_46105170/article/details/108656955。程式碼如下:

public class Solution {
/** * @param arr: The array you should handle * @return: Return the product */ public int[] getProduct(int[] arr) { // Write your code here int[] res = new int[arr.length]; if (arr.length == 1) { return res; } long prod =
1; int zeroCount = 0; for (int i = 0; i < arr.length; i++) { if (arr[i] != 0) { prod *= arr[i]; } else { zeroCount++; } } if (zeroCount == 1) { for (int i = 0; i < arr.length; i++
) { if (arr[i] == 0) { res[i] = (int) prod; } else { res[i] = 0; } } } else if (zeroCount == 0) { for (int i = 0; i < arr.length; i++) { res[i] = (int) (prod / arr[i]); } } return res; } }

時間複雜度 O ( l A ) O(l_A) O(lA),空間 O ( 1 ) O(1) O(1)