We love coding - #2

更新 發佈閱讀 3 分鐘
Hi, I'm coding dog. We love coding.

Here's today's coding interview problem.

Q:

給定一個整數陣列,請回傳一個新的陣列,其中新陣列中的每個索引 i 的元素都是原始陣列中除了索引 i 的所有數字的乘積。

例如,如果我們的輸入是 [1, 2, 3, 4, 5],則預期輸出為 [120, 60, 40, 30, 24]。如果我們的輸入是 [3, 2, 1],則預期輸出為 [2, 3, 6]。不使用除法。


A:

解決這個問題,我們可以先計算出陣列中所有元素的乘積。然後,對於陣列中的每個元素,我們可以將總乘積除以該元素,以獲得其他元素的乘積。我們可以使用一個新的陣列來存儲這些乘積。

以下是這個方法的 Python 代碼:

def product_except_self(nums):
product = 1
for num in nums:
product *= num
result = []
for num in nums:
result.append(product // num)
return result

這個方法的時間複雜度為 O(n),其中 n 是輸入陣列的長度。但是,如果輸入陣列中有零,就可能會出現除以零的問題。

要處理不能使用除法的情況,我們可以使用兩個陣列:一個用於存儲每個元素左側所有元素的乘積,另一個用於存儲每個元素右側所有元素的乘積。然後,我們可以結合這兩個陣列來獲得最終結果。

以下是這個方法的 Python 代碼:

def product_except_self(nums):
n = len(nums)
left_products = [1] * n
right_products = [1] * n
for i in range(1, n):
left_products[i] = left_products[i-1] * nums[i-1]
for i in range(n-2, -1, -1):
right_products[i] = right_products[i+1] * nums[i+1]
result = [left_products[i] * right_products[i] for i in range(n)]
return result

這個方法的時間複雜度為 O(n),其中 n 是輸入陣列的長度。這個方法不會出現上一個方法中的除以零問題。


留言
avatar-img
留言分享你的想法!
avatar-img
CodingDog的沙龍
1會員
4內容數
Solve a coding interview problem everyday.
CodingDog的沙龍的其他內容
2023/03/08
Hi. I'm coding dog. Let's solve today's coding interview problem. Q: 給定一個整數陣列,請在線性時間和常數空間中找到第一個遺失的正整數。換句話說,找到陣列中不存在的最小正整數。陣列也可以包含重複項和負數。 A: 為了找到給定陣列中不
Thumbnail
2023/03/08
Hi. I'm coding dog. Let's solve today's coding interview problem. Q: 給定一個整數陣列,請在線性時間和常數空間中找到第一個遺失的正整數。換句話說,找到陣列中不存在的最小正整數。陣列也可以包含重複項和負數。 A: 為了找到給定陣列中不
Thumbnail
2023/03/08
Hi, I'm coding dog! Q: 給定一個二元樹的根節點,請實現一個函數 serialize(root),將該樹序列化為一個字符串,以及函數 deserialize(s),將該字符串反序列化回一棵二元樹。 例如,給定以下節點類別: 以下測試應該通過: A: 序列化的過程可以通過對樹進行先
Thumbnail
2023/03/08
Hi, I'm coding dog! Q: 給定一個二元樹的根節點,請實現一個函數 serialize(root),將該樹序列化為一個字符串,以及函數 deserialize(s),將該字符串反序列化回一棵二元樹。 例如,給定以下節點類別: 以下測試應該通過: A: 序列化的過程可以通過對樹進行先
Thumbnail
2023/03/07
Hi, I'm coding dog. We love coding. 以下是今天的編碼面試題目。 Q: 給定一個數字列表和一個數字 k,返回列表中是否有任意兩個數字相加得到 k。例如,給定 [10, 15, 3, 7] 和 k 為 17,返回 true,因為 10 + 7 = 17。
Thumbnail
2023/03/07
Hi, I'm coding dog. We love coding. 以下是今天的編碼面試題目。 Q: 給定一個數字列表和一個數字 k,返回列表中是否有任意兩個數字相加得到 k。例如,給定 [10, 15, 3, 7] 和 k 為 17,返回 true,因為 10 + 7 = 17。
Thumbnail
看更多
你可能也想看
Thumbnail
題目敘述 題目會給定我們一個輸入陣列nums,要求我們掃描美個陣列元素nums[i],計算除了nums[i]以外的陣列元素連乘積。 題目的原文敘述 測試範例 Example 1: Input: nums = [1,2,3,4] Output: [24,12,8,6] nums[0] 以
Thumbnail
題目敘述 題目會給定我們一個輸入陣列nums,要求我們掃描美個陣列元素nums[i],計算除了nums[i]以外的陣列元素連乘積。 題目的原文敘述 測試範例 Example 1: Input: nums = [1,2,3,4] Output: [24,12,8,6] nums[0] 以
Thumbnail
題目:你的團隊正在開發一個新的高級文本編輯器,你的任務是實現行號功能。請編寫一個函數,該函數接受一個字符串列表作為輸入,並返回每行字符串前面附帶正確的行號。行號從 1 開始計數。格式為 n: 字符串。請注意冒號和空格之間的間隔。
Thumbnail
題目:你的團隊正在開發一個新的高級文本編輯器,你的任務是實現行號功能。請編寫一個函數,該函數接受一個字符串列表作為輸入,並返回每行字符串前面附帶正確的行號。行號從 1 開始計數。格式為 n: 字符串。請注意冒號和空格之間的間隔。
Thumbnail
這題就是經典的考排序驗算法, 不管在教科書、上機考、面試白板題都是一個很基本又滿熱門的題目。 題目會給定一個輸入陣列,要求我們實作一個排序演算法,把陣列元素從小到大排好。
Thumbnail
這題就是經典的考排序驗算法, 不管在教科書、上機考、面試白板題都是一個很基本又滿熱門的題目。 題目會給定一個輸入陣列,要求我們實作一個排序演算法,把陣列元素從小到大排好。
Thumbnail
Hi. I'm coding dog. Let's solve today's coding interview problem. Q: 給定一個整數陣列,請在線性時間和常數空間中找到第一個遺失的正整數。換句話說,找到陣列中不存在的最小正整數。陣列也可以包含重複項和負數。 A: 為了找到給定陣列中不
Thumbnail
Hi. I'm coding dog. Let's solve today's coding interview problem. Q: 給定一個整數陣列,請在線性時間和常數空間中找到第一個遺失的正整數。換句話說,找到陣列中不存在的最小正整數。陣列也可以包含重複項和負數。 A: 為了找到給定陣列中不
Thumbnail
Hi, I'm coding dog. We love coding. 以下是今天的編碼面試題目。 Q: 給定一個數字列表和一個數字 k,返回列表中是否有任意兩個數字相加得到 k。例如,給定 [10, 15, 3, 7] 和 k 為 17,返回 true,因為 10 + 7 = 17。
Thumbnail
Hi, I'm coding dog. We love coding. 以下是今天的編碼面試題目。 Q: 給定一個數字列表和一個數字 k,返回列表中是否有任意兩個數字相加得到 k。例如,給定 [10, 15, 3, 7] 和 k 為 17,返回 true,因為 10 + 7 = 17。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News