付費限定

前綴連乘: 除了自己之外的連乘積 Product of Array Except Self_Leetcode 精選75題

閱讀時間約 4 分鐘

題目敘述

題目會給定我們一個輸入陣列nums,要求我們掃描每個陣列元素nums[i],計算除了nums[i]以外的陣列元素連乘積。

題目的原文敘述


測試範例

Example 1:

Input: nums = [1,2,3,4]
Output: [24,12,8,6]

nums[0] 以外的陣列元素連乘積 = 2 * 3 * 4 = 24
nums[1] 以外​的陣列元素連乘積 = 1 * 3 * 4 = 12
nums[2] 以外​的陣列元素連乘積 = 1 * 2 * 4 = 8
nums[3] 以外​的陣列元素連乘積 = 1 * 2 * 3 = 6

Example 2:

Input: nums = [-1,1,0,-3,3]
Output: [0,0,9,0,0]

nums[0] 以外的陣列元素連乘積 = 1 * 0 * -3 * 3 = 0
nums[1] 以外​的陣列元素連乘積 = -1 * 0 * -3 * 3 = 0
nums[2] 以外​的陣列元素連乘積 = -1 * 1 * -3 * 3 = 9
nums[3] 以外​的陣列元素連乘積 = -1 * 1 * 0 * 3 = 0
nums[4] 以外​的陣列元素連乘積 = -1 * 1 * 0 * -3 = 0

約束條件

Constraints:

  • 2 <= nums.length <= 10^5

輸入陣列長度介於2~10^5之間

  • -30 <= nums[i] <= 30

陣列元素都介於-30 ~ 30 之間

  • The product of any prefix or suffix of nums is guaranteed to fit in a 32-bit integer.

保證連乘積不會超過 32bit整數的範圍


演算法

這題可以借用經典的前綴和prefix sum的觀念。

前綴和原本的定義是連續陣列元素的總和。

這邊,我們題目所要求的是扣除自己之外的連乘積,因此,我們可以寫成

對於nums[i]而言,扣除自己之外的連乘積

= nums[0] * num[1] * ... * nums[i-1] * nums[i+1] * nums[i+2] * ... nums[n-1]

= (nums[0] * num[1] * ... * nums[i-1]) * (nums[i+1] * nums[i+2] * ... nums[n-1])

= prefix product of (i-1) * postfix product of (i+1)

= 到(i-1)為止的前綴乘積 * 從(i+1)開始的後綴乘積


把上述的關係式,透過迴圈去做一個線性掃描,依序更新每個索引i所對應到的連乘積即可。

以行動支持創作者!付費即可解鎖
本篇內容共 1918 字、1 則留言,僅發佈於Leetcode精選75題 解析+統整你目前無法檢視以下內容,可能因為尚未登入,或沒有該房間的查看權限。
86會員
425內容數
由有業界實戰經驗的演算法工程師, 手把手教你建立解題的框架, 一步步寫出高效、清晰易懂的解題答案。 著重在讓讀者啟發思考、理解演算法,熟悉常見的演算法模板。 深入淺出地介紹題目背後所使用的演算法意義,融會貫通演算法與資料結構的應用。 在幾個經典的題目融入一道題目的多種解法,或者同一招解不同的題目,擴展廣度,並加深印象。
留言0
查看全部
發表第一個留言支持創作者!
題目敘述 題目會給定我們一顆二元樹的根結點,要求我們計算這棵樹的好結點Good node有多少個? 好結點Good node的定義: 某個節點v是好結點,假如從Root node根結點 到 結點v沿途的節點值都小於等於節點v的節點值。 如果還是覺得很模糊,看下方的測試範例就可以很清楚了解
題目敘述 題目會給定一個鏈結串列 Linked List的頭部結點,要求我們根據索引的奇偶數重新排列。奇數索引的在前,偶數索引的在後。數的時候,從Head節點的索引=1開始數。 例如: 1 -> 2 -> 3 -> 4 -> 5 重新排列為 1 -> 3 -> 5 -> 2 -> 4
題目敘述 題目會給我們一個鏈結串列的頭部結點Head node,要求我們計算鏈結串列中的Twin sum最大值是多少? 註: Twin Sum的定義就是頭尾結點相對位置相同的,互相配對加總在一起的值。 例如 給定串列= 1 -> 3 -> 2 -> 5 -> 100 -> 8 1, 8 一組
題目敘述 題目會給定我們一條鏈結串列Linked list的起始節點,要求我們刪除Linked List正中央的節點。 註: 正中央的節點,題目定義為索引為floor( 串列長度 / 2 ) 的節點,索引從零(Head Node)出發開始數。 例如 1 -> 2 -> 3 -> 4 鏈結
題目敘述 題目會給我們一個字串s。 要求我們移除字串中的星號,還有刪除星號左手邊最靠近的第一個字元。 以字串的形式返回輸出答案。 題目的原文敘述 測試範例 Example 1: Input: s = "leet**cod*e" Output: "lecoe" Explanation:
題目敘述 題目會給我們一個定義好的類別和function介面,要求我們實作建構子和ping() function來滿足指定的需求。 RecentCounter類別的建構子 建構子應該初始化來電紀錄,內容為空(零筆資料) int ping(int t) t代表來電時刻,單位是毫秒m
題目敘述 題目會給定我們一顆二元樹的根結點,要求我們計算這棵樹的好結點Good node有多少個? 好結點Good node的定義: 某個節點v是好結點,假如從Root node根結點 到 結點v沿途的節點值都小於等於節點v的節點值。 如果還是覺得很模糊,看下方的測試範例就可以很清楚了解
題目敘述 題目會給定一個鏈結串列 Linked List的頭部結點,要求我們根據索引的奇偶數重新排列。奇數索引的在前,偶數索引的在後。數的時候,從Head節點的索引=1開始數。 例如: 1 -> 2 -> 3 -> 4 -> 5 重新排列為 1 -> 3 -> 5 -> 2 -> 4
題目敘述 題目會給我們一個鏈結串列的頭部結點Head node,要求我們計算鏈結串列中的Twin sum最大值是多少? 註: Twin Sum的定義就是頭尾結點相對位置相同的,互相配對加總在一起的值。 例如 給定串列= 1 -> 3 -> 2 -> 5 -> 100 -> 8 1, 8 一組
題目敘述 題目會給定我們一條鏈結串列Linked list的起始節點,要求我們刪除Linked List正中央的節點。 註: 正中央的節點,題目定義為索引為floor( 串列長度 / 2 ) 的節點,索引從零(Head Node)出發開始數。 例如 1 -> 2 -> 3 -> 4 鏈結
題目敘述 題目會給我們一個字串s。 要求我們移除字串中的星號,還有刪除星號左手邊最靠近的第一個字元。 以字串的形式返回輸出答案。 題目的原文敘述 測試範例 Example 1: Input: s = "leet**cod*e" Output: "lecoe" Explanation:
題目敘述 題目會給我們一個定義好的類別和function介面,要求我們實作建構子和ping() function來滿足指定的需求。 RecentCounter類別的建構子 建構子應該初始化來電紀錄,內容為空(零筆資料) int ping(int t) t代表來電時刻,單位是毫秒m
你可能也想看
Google News 追蹤
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
美國總統大選只剩下三天, 我們觀察一整週民調與金融市場的變化(包含賭局), 到本週五下午3:00前為止, 誰是美國總統幾乎大概可以猜到60-70%的機率, 本篇文章就是以大選結局為主軸來討論近期甚至到未來四年美股可能的改變
Thumbnail
看文章教學之前,可以先下載檔案來試著自己做看看哦!!! 檔案下載 有網友提問,如何將所有的平日加班與假日加班時數合計到K欄,假日加班為了註明星期幾加班,前面分別會加上六、日當作前贅詞。 只不過是加總而已,讓我直接SUM看看好了!!! 答案好像怪怪的,怎麼只有平日的數據加總而已
Thumbnail
沒有人發現,你真正孓然一身,隻身一人。 你不孤單,卻陌生得跟局外人沒兩樣:世界依舊,而被置身事外的人是你。
Thumbnail
這部電影的主角,就是肚臍君夢想能成為的那種.. 才華洋溢、無法取代,彷彿活在世界的中心點的人。 啊..但是 站上事業高峰、能讓大家尊稱一聲「大師」。如果用職場女強人這個標籤去形容她恐怕還落於俗套..
Thumbnail
大家都知道「水垢」是來自水中的礦物質沈澱,尤其是碳酸鈣,所以外表看起來白白的,而且只要沾附到水壺上就很難洗掉。 世界衛生組織(WHO)的水質標準中寫到,水中的碳酸鈣對人體沒有什麼影響,不需要訂定上限;換言之,所謂「硬水」、「軟水」,除了口感上的差異外,硬水也會讓你在洗髮洗澡時覺得頭髮身體比較乾澀。
Thumbnail
〈機器的脈動〉是Netflix原創科幻動畫影集《愛 x 死 x 機器人》其中一集短片,故事改編自美國科幻小說家Michael Swanwick獲得雨果獎的同名短篇小說。主角是名太空人,在探索木衛一艾歐時遭遇事故,她孤身一人,在如夢的幻境中,和艾歐進行關於生命的辯證。
Thumbnail
〈雨中的貓〉、〈一則很短的故事〉,以及〈一個乾淨明亮的地方〉。這三篇故事皆帶有海明威的溫柔慨嘆,某種氤氳氣氛,接近費茲傑羅,但沒有他的蓬勃虛華 ── 海明威總是實心的,行文如打靶,力透紙背的子彈,最終射穿作家的肉身。
Thumbnail
紀錄片《墜:波音大調查》是對2018、2019年波音公司生產新型飛機接連的空難事件做出調查,從過往離職員工的口吻到受難者家屬和公司管理、飛航專家的討論和華爾街股價,來說明為何波音公司從一個美國人的安全指標跌下神壇變成讓榮光不在的美國軼夢。
Thumbnail
1普京暗示繼續與美國和北約談判,外長拉夫羅夫稱美國提議有建設性: 2如何保住美聯儲抗通脹公信力?鷹派決策者主張前置加息: 3交易員預計美聯儲加息週期將於明年年中見頂: 4拉加德堅持漸進原則,稱歐洲央行將在“正確的時間”採取行動: 5伊朗稱自己急於在維也納談判中達成一份良好的核協議: 關於 JRFX
Thumbnail
筆者分為以下三大部分和大家分享:外表、心態、當日狀況。
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
美國總統大選只剩下三天, 我們觀察一整週民調與金融市場的變化(包含賭局), 到本週五下午3:00前為止, 誰是美國總統幾乎大概可以猜到60-70%的機率, 本篇文章就是以大選結局為主軸來討論近期甚至到未來四年美股可能的改變
Thumbnail
看文章教學之前,可以先下載檔案來試著自己做看看哦!!! 檔案下載 有網友提問,如何將所有的平日加班與假日加班時數合計到K欄,假日加班為了註明星期幾加班,前面分別會加上六、日當作前贅詞。 只不過是加總而已,讓我直接SUM看看好了!!! 答案好像怪怪的,怎麼只有平日的數據加總而已
Thumbnail
沒有人發現,你真正孓然一身,隻身一人。 你不孤單,卻陌生得跟局外人沒兩樣:世界依舊,而被置身事外的人是你。
Thumbnail
這部電影的主角,就是肚臍君夢想能成為的那種.. 才華洋溢、無法取代,彷彿活在世界的中心點的人。 啊..但是 站上事業高峰、能讓大家尊稱一聲「大師」。如果用職場女強人這個標籤去形容她恐怕還落於俗套..
Thumbnail
大家都知道「水垢」是來自水中的礦物質沈澱,尤其是碳酸鈣,所以外表看起來白白的,而且只要沾附到水壺上就很難洗掉。 世界衛生組織(WHO)的水質標準中寫到,水中的碳酸鈣對人體沒有什麼影響,不需要訂定上限;換言之,所謂「硬水」、「軟水」,除了口感上的差異外,硬水也會讓你在洗髮洗澡時覺得頭髮身體比較乾澀。
Thumbnail
〈機器的脈動〉是Netflix原創科幻動畫影集《愛 x 死 x 機器人》其中一集短片,故事改編自美國科幻小說家Michael Swanwick獲得雨果獎的同名短篇小說。主角是名太空人,在探索木衛一艾歐時遭遇事故,她孤身一人,在如夢的幻境中,和艾歐進行關於生命的辯證。
Thumbnail
〈雨中的貓〉、〈一則很短的故事〉,以及〈一個乾淨明亮的地方〉。這三篇故事皆帶有海明威的溫柔慨嘆,某種氤氳氣氛,接近費茲傑羅,但沒有他的蓬勃虛華 ── 海明威總是實心的,行文如打靶,力透紙背的子彈,最終射穿作家的肉身。
Thumbnail
紀錄片《墜:波音大調查》是對2018、2019年波音公司生產新型飛機接連的空難事件做出調查,從過往離職員工的口吻到受難者家屬和公司管理、飛航專家的討論和華爾街股價,來說明為何波音公司從一個美國人的安全指標跌下神壇變成讓榮光不在的美國軼夢。
Thumbnail
1普京暗示繼續與美國和北約談判,外長拉夫羅夫稱美國提議有建設性: 2如何保住美聯儲抗通脹公信力?鷹派決策者主張前置加息: 3交易員預計美聯儲加息週期將於明年年中見頂: 4拉加德堅持漸進原則,稱歐洲央行將在“正確的時間”採取行動: 5伊朗稱自己急於在維也納談判中達成一份良好的核協議: 關於 JRFX
Thumbnail
筆者分為以下三大部分和大家分享:外表、心態、當日狀況。