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
身為採購專家,當然不能錯過11/11購物節的超殺折扣!本文將帶你深入瞭解蝦皮11/11購物節的完整攻略,從必領的各種優惠券、商城折扣,到限時的搶購技巧,讓你買到手軟荷包也不哭泣。更重要的是,揭密蝦皮分潤計畫,教你如何零成本創業,透過分享商品連結,每月輕鬆加薪,開啟數位遊牧人生!
Thumbnail
身為採購專家,當然不能錯過11/11購物節的超殺折扣!本文將帶你深入瞭解蝦皮11/11購物節的完整攻略,從必領的各種優惠券、商城折扣,到限時的搶購技巧,讓你買到手軟荷包也不哭泣。更重要的是,揭密蝦皮分潤計畫,教你如何零成本創業,透過分享商品連結,每月輕鬆加薪,開啟數位遊牧人生!
Thumbnail
雙11購物節將近,這次分享一些蝦皮海外賣場購物的步驟與注意事項,並且介紹雙11蝦皮購物的相關優惠;另外蝦皮分潤計畫持續招募新血中,只要分享購物連結即可獲得分潤,是很適合創作者的額外收入管道喔!
Thumbnail
雙11購物節將近,這次分享一些蝦皮海外賣場購物的步驟與注意事項,並且介紹雙11蝦皮購物的相關優惠;另外蝦皮分潤計畫持續招募新血中,只要分享購物連結即可獲得分潤,是很適合創作者的額外收入管道喔!
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。
Thumbnail
比今天的題目示例如下: Input: nums = [-4,-1,0,3,10] Output: [0,1,9,16,100] 簡單來說,要的輸出結果是把陣列內每個數字取平方後,對陣列做排序。
Thumbnail
比今天的題目示例如下: Input: nums = [-4,-1,0,3,10] Output: [0,1,9,16,100] 簡單來說,要的輸出結果是把陣列內每個數字取平方後,對陣列做排序。
Thumbnail
進入第4天教學,今天繼續學習基礎的教學,是跟容器型態(list、tuple、dict)、迴圈(while、for)相關的教學,迴圈是今天的重點,記得好好學習唷!!
Thumbnail
進入第4天教學,今天繼續學習基礎的教學,是跟容器型態(list、tuple、dict)、迴圈(while、for)相關的教學,迴圈是今天的重點,記得好好學習唷!!
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News