付費限定

前綴連乘: 除了自己之外的連乘積 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所對應到的連乘積即可。

Support the creator with action! Pay to unlock
本篇內容共 1918 字、1 則留言,僅發佈於Leetcode精選75題 解析+統整You currently cannot view the following content, possibly because you are not logged in or do not have permission to view the room.
81會員
417Content count
由有業界實戰經驗的演算法工程師, 手把手教你建立解題的框架, 一步步寫出高效、清晰易懂的解題答案。 著重在讓讀者啟發思考、理解演算法,熟悉常見的演算法模板。 深入淺出地介紹題目背後所使用的演算法意義,融會貫通演算法與資料結構的應用。 在幾個經典的題目融入一道題目的多種解法,或者同一招解不同的題目,擴展廣度,並加深印象。
留言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
你可能也想看
Thumbnail
1.加權指數與櫃買指數 週五的加權指數在非農就業數據開出來後,雖稍微低於預期,但指數仍向上噴出,在美股開盤後於21500形成一個爆量假突破後急轉直下,就一路收至最低。 台股方面走勢需觀察週一在斷頭潮出現後,週二或週三開始有無買單進場支撐,在沒有明確的反轉訊號形成前,小夥伴盡量不要貿然抄底,或是追空
Thumbnail
重點摘要: 1.9 月降息 2 碼、進一步暗示年內還有 50 bp 降息 2.SEP 上修失業率預期,但快速的降息速率將有助失業率觸頂 3.未來幾個月經濟數據將繼續轉弱,經濟復甦的時點或是 1Q25 季底附近
Thumbnail
近期的「貼文發佈流程 & 版型大更新」功能大家使用了嗎? 新版式整體視覺上「更加凸顯圖片」,為了搭配這次的更新,我們推出首次貼文策展 ❤️ 使用貼文功能並完成這次的指定任務,還有機會獲得富士即可拍,讓你的美好回憶都可以用即可拍珍藏!
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
1.加權指數與櫃買指數 週五的加權指數在非農就業數據開出來後,雖稍微低於預期,但指數仍向上噴出,在美股開盤後於21500形成一個爆量假突破後急轉直下,就一路收至最低。 台股方面走勢需觀察週一在斷頭潮出現後,週二或週三開始有無買單進場支撐,在沒有明確的反轉訊號形成前,小夥伴盡量不要貿然抄底,或是追空
Thumbnail
重點摘要: 1.9 月降息 2 碼、進一步暗示年內還有 50 bp 降息 2.SEP 上修失業率預期,但快速的降息速率將有助失業率觸頂 3.未來幾個月經濟數據將繼續轉弱,經濟復甦的時點或是 1Q25 季底附近
Thumbnail
近期的「貼文發佈流程 & 版型大更新」功能大家使用了嗎? 新版式整體視覺上「更加凸顯圖片」,為了搭配這次的更新,我們推出首次貼文策展 ❤️ 使用貼文功能並完成這次的指定任務,還有機會獲得富士即可拍,讓你的美好回憶都可以用即可拍珍藏!
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
筆者分為以下三大部分和大家分享:外表、心態、當日狀況。