前綴和應用: 指定目標值的子陣列數目 Binary Subarrays With Sum_Leetcode #930

閱讀時間約 4 分鐘

題目敘述

題目會給定一個陣列nums和一個目標值goal。

要求我們計算子陣列總和=goal的數目有多少


題目的原文敘述


測試範例

Example 1:

Input: nums = [1,0,1,0,1], goal = 2
Output: 4
Explanation: The 4 subarrays are bolded and underlined below:
[1,0,1,0,1]
[1,0,1,0,1]
[1,0,1,0,1]
[1,0,1,0,1]

Example 2:

Input: nums = [0,0,0,0,0], goal = 0
Output: 15

約束條件

Constraints:

  • 1 <= nums.length <= 3 * 10^4

輸入陣列長度介於1~三萬。

  • nums[i] is either 0 or 1.

陣列元素要嘛為0,要嘛為1。

  • 0 <= goal <= nums.length

目標值goal介於0~陣列長度之間。


演算法 前綴和 + 字典

這題會用到以前學過的前綴和技巧。(和前面那題用到的觀念是類似的)

從左到右滾動依序計算前綴和,並且把每個前綴和出現的次數存到字典裡面


如果當下在某個位置前綴和為S,而且在字典裡面又發現前面曾經看過前綴和S-goal

那麼代表從前面到現在這個位置,存在有滿足條件的子陣列,而且子陣列的總和為goal

例如:

給定nums=[1, 0, 1, 1], goal = 2

前綴和 = [1, 0, 2, 3]

可以找出子陣列goal = 2的部分為

[1, 0, 1],

[0, 1, 1]

[1, 1]

總共有三個子陣列滿足條件,子陣列區間總和為2。


程式碼 前綴和 + 字典

class Solution:
def numSubarraysWithSum(self, nums, goal):


## Dictionary
# key: prefixSum
# value: occurrence of specific prefixSum
OccOfprefixSum = defaultdict(int)

# Prefix 0 is satisfied by taking nothing
OccOfprefixSum[0] = 1

count, prefixSum = 0, 0

for number in nums:

# update prefixSum so far
prefixSum += number

# If we've seen "prefixSum-goal" before, then subarray with goal must exist
count += OccOfprefixSum[prefixSum-goal]

# Update occurrence of current prefixSum
OccOfprefixSum[prefixSum] += 1

# Total count of subarray with summation = goal
return count


複雜度分析 前綴和 + 字典

時間複雜度:

線性掃描,所需時間為O(n)。


空間複雜度:

需要建立一個前綴和字典,所需空間為O(n)。


關鍵知識點

如果當下在某個位置前綴和為S,而且在字典裡面又發現前面曾經看過前綴和S-goal
那麼代表從前面到現在這個位置,存在有滿足條件的子陣列,而且子陣列的總和為goal

Reference:

[1] Binary Subarrays With Sum - LeetCode

86會員
425內容數
由有業界實戰經驗的演算法工程師, 手把手教你建立解題的框架, 一步步寫出高效、清晰易懂的解題答案。 著重在讓讀者啟發思考、理解演算法,熟悉常見的演算法模板。 深入淺出地介紹題目背後所使用的演算法意義,融會貫通演算法與資料結構的應用。 在幾個經典的題目融入一道題目的多種解法,或者同一招解不同的題目,擴展廣度,並加深印象。
留言0
查看全部
發表第一個留言支持創作者!
題目敘述 題目會給定一個鏈結串列的起始點,要求我們把其中區間總和為0的部分刪除掉。 例如 1→ 2 → -2 → 3 → 4 裡面有一段是2 → -2 區間總和為零,所以簡化刪除後變成 1→ 3 → 4 題目的原文敘述 測試範例 Example 1: Input: head
題目敘述 題目會給定我們兩個字串。 第一個是指定順序的字串order。 第二個是輸入字串s。 要求我們依據order給定的順序,重新排列s。 如果出現order中沒有出現的字母,任意位置皆可。 合法答案可能不只一組,輸出其中一種即可。 題目的原文敘述 測試範例 Example
題目敘述 題目會給定一棵二元樹的根結點,要求我們判定這是否為一顆合法的奇偶二元樹? 奇偶二元樹的定義: 從上到下依序是第0層、第一層、...、第n層 偶數層裡面的節點值都必須是奇數,而且由左到右嚴格遞增。 奇數層裡面的節點值都必須是偶數,而且由左到右嚴格遞減。 題目的原文敘述 測試
題目敘述 題目會給定一棵二元樹的根結點,要求我們找出這棵二元樹最後一層最左邊的值。 題目的原文敘述 測試範例 Example 1: Input: root = [2,1,3] Output: 1 Example 2: Input: root = [1,2,3,4,null,5,6
題目敘述 題目會給定一個參數n代表人口總數,和對應的信任關係陣列trust,陣列元素都是pair都以,[a, b]的形式呈現,代表a信任b。 要求我們找出法官是誰,返回法官的ID? 成為法官的條件: 1.每個人(除了法官自己之外)都信任法官。 2.法官不信任別人。 題目的原文敘述
題目敘述 題目會給我們一個大樓陣列heights,裡面分別記錄每一棟大樓的高度。還有參數bricks代表可用的磚塊數目,和 ladders代表可用的伸縮爬梯數目。 一開始從最左邊的大樓頂樓開始出發。 假如下一棟比現在這棟大樓還矮,或者一樣高,則我們可以直接抵達下一棟。 假如下一棟比現在
題目敘述 題目會給定一個鏈結串列的起始點,要求我們把其中區間總和為0的部分刪除掉。 例如 1→ 2 → -2 → 3 → 4 裡面有一段是2 → -2 區間總和為零,所以簡化刪除後變成 1→ 3 → 4 題目的原文敘述 測試範例 Example 1: Input: head
題目敘述 題目會給定我們兩個字串。 第一個是指定順序的字串order。 第二個是輸入字串s。 要求我們依據order給定的順序,重新排列s。 如果出現order中沒有出現的字母,任意位置皆可。 合法答案可能不只一組,輸出其中一種即可。 題目的原文敘述 測試範例 Example
題目敘述 題目會給定一棵二元樹的根結點,要求我們判定這是否為一顆合法的奇偶二元樹? 奇偶二元樹的定義: 從上到下依序是第0層、第一層、...、第n層 偶數層裡面的節點值都必須是奇數,而且由左到右嚴格遞增。 奇數層裡面的節點值都必須是偶數,而且由左到右嚴格遞減。 題目的原文敘述 測試
題目敘述 題目會給定一棵二元樹的根結點,要求我們找出這棵二元樹最後一層最左邊的值。 題目的原文敘述 測試範例 Example 1: Input: root = [2,1,3] Output: 1 Example 2: Input: root = [1,2,3,4,null,5,6
題目敘述 題目會給定一個參數n代表人口總數,和對應的信任關係陣列trust,陣列元素都是pair都以,[a, b]的形式呈現,代表a信任b。 要求我們找出法官是誰,返回法官的ID? 成為法官的條件: 1.每個人(除了法官自己之外)都信任法官。 2.法官不信任別人。 題目的原文敘述
題目敘述 題目會給我們一個大樓陣列heights,裡面分別記錄每一棟大樓的高度。還有參數bricks代表可用的磚塊數目,和 ladders代表可用的伸縮爬梯數目。 一開始從最左邊的大樓頂樓開始出發。 假如下一棟比現在這棟大樓還矮,或者一樣高,則我們可以直接抵達下一棟。 假如下一棟比現在
你可能也想看
Google News 追蹤
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
看文章教學之前,可以先下載檔案來試著自己做看看哦!!! 檔案下載 有網友提問,如何將所有的平日加班與假日加班時數合計到K欄,假日加班為了註明星期幾加班,前面分別會加上六、日當作前贅詞。 只不過是加總而已,讓我直接SUM看看好了!!! 答案好像怪怪的,怎麼只有平日的數據加總而已
☆ 小弟畢業前跑去荷蘭交換一學期、因而愛上了荷蘭,嚷著要帶我們去走走看看。趁著最小的妹妹畢業之際,我們四個加上大弟的女友,半年前買好來回機票和預定住宿、以立定成團決心。隨後大家又沒入生活的忙碌中,戀愛、工作、家庭、興趣、學習.....各種重心的轉移,沒辦法單腳站立,於是時間就這樣推進、退盡,退到了
Thumbnail
這部電影的主角,就是肚臍君夢想能成為的那種.. 才華洋溢、無法取代,彷彿活在世界的中心點的人。 啊..但是 站上事業高峰、能讓大家尊稱一聲「大師」。如果用職場女強人這個標籤去形容她恐怕還落於俗套..
Step0: 有API跟合約地址 前集提要:基礎智能合約 https://app.gitbook.com/o/2Og60fxjxr8ujOJl0Uns/s/bTPJaVnpufRAdMCNcQDH/asc-ji-chu-zhi-neng-he-yao-v1 Step1:創辦Github帳號 Gith
Thumbnail
官方編輯IDE:(請收藏) remix Step1安裝 Metamask 並搞到測試用ETH幣 裝完之後開啟測試模式 設定→ 進階 → Show test networks 將節點切到 Goerli網路(因為原先的 Rinkeby 代幣難拿) 獲取開發用的測試 ETH: https://goerli
Thumbnail
〈機器的脈動〉是Netflix原創科幻動畫影集《愛 x 死 x 機器人》其中一集短片,故事改編自美國科幻小說家Michael Swanwick獲得雨果獎的同名短篇小說。主角是名太空人,在探索木衛一艾歐時遭遇事故,她孤身一人,在如夢的幻境中,和艾歐進行關於生命的辯證。
Thumbnail
〈雨中的貓〉、〈一則很短的故事〉,以及〈一個乾淨明亮的地方〉。這三篇故事皆帶有海明威的溫柔慨嘆,某種氤氳氣氛,接近費茲傑羅,但沒有他的蓬勃虛華 ── 海明威總是實心的,行文如打靶,力透紙背的子彈,最終射穿作家的肉身。
Thumbnail
紀錄片《墜:波音大調查》是對2018、2019年波音公司生產新型飛機接連的空難事件做出調查,從過往離職員工的口吻到受難者家屬和公司管理、飛航專家的討論和華爾街股價,來說明為何波音公司從一個美國人的安全指標跌下神壇變成讓榮光不在的美國軼夢。
Thumbnail
前言 這是一個使用年報資料來做選股,並且隨時可以進場的投資策略,最重要的理論基礎是相信會有均值回歸的情況。就理論上來說,假如投入的資金夠多(三百萬以上應該就足夠了),理想情況下應該是把符合選股標準的股票都買進,但可惜的是一般人很顯然不會有這樣多的資金。所以還是要把投資標的在進一步縮小才行。
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
看文章教學之前,可以先下載檔案來試著自己做看看哦!!! 檔案下載 有網友提問,如何將所有的平日加班與假日加班時數合計到K欄,假日加班為了註明星期幾加班,前面分別會加上六、日當作前贅詞。 只不過是加總而已,讓我直接SUM看看好了!!! 答案好像怪怪的,怎麼只有平日的數據加總而已
☆ 小弟畢業前跑去荷蘭交換一學期、因而愛上了荷蘭,嚷著要帶我們去走走看看。趁著最小的妹妹畢業之際,我們四個加上大弟的女友,半年前買好來回機票和預定住宿、以立定成團決心。隨後大家又沒入生活的忙碌中,戀愛、工作、家庭、興趣、學習.....各種重心的轉移,沒辦法單腳站立,於是時間就這樣推進、退盡,退到了
Thumbnail
這部電影的主角,就是肚臍君夢想能成為的那種.. 才華洋溢、無法取代,彷彿活在世界的中心點的人。 啊..但是 站上事業高峰、能讓大家尊稱一聲「大師」。如果用職場女強人這個標籤去形容她恐怕還落於俗套..
Step0: 有API跟合約地址 前集提要:基礎智能合約 https://app.gitbook.com/o/2Og60fxjxr8ujOJl0Uns/s/bTPJaVnpufRAdMCNcQDH/asc-ji-chu-zhi-neng-he-yao-v1 Step1:創辦Github帳號 Gith
Thumbnail
官方編輯IDE:(請收藏) remix Step1安裝 Metamask 並搞到測試用ETH幣 裝完之後開啟測試模式 設定→ 進階 → Show test networks 將節點切到 Goerli網路(因為原先的 Rinkeby 代幣難拿) 獲取開發用的測試 ETH: https://goerli
Thumbnail
〈機器的脈動〉是Netflix原創科幻動畫影集《愛 x 死 x 機器人》其中一集短片,故事改編自美國科幻小說家Michael Swanwick獲得雨果獎的同名短篇小說。主角是名太空人,在探索木衛一艾歐時遭遇事故,她孤身一人,在如夢的幻境中,和艾歐進行關於生命的辯證。
Thumbnail
〈雨中的貓〉、〈一則很短的故事〉,以及〈一個乾淨明亮的地方〉。這三篇故事皆帶有海明威的溫柔慨嘆,某種氤氳氣氛,接近費茲傑羅,但沒有他的蓬勃虛華 ── 海明威總是實心的,行文如打靶,力透紙背的子彈,最終射穿作家的肉身。
Thumbnail
紀錄片《墜:波音大調查》是對2018、2019年波音公司生產新型飛機接連的空難事件做出調查,從過往離職員工的口吻到受難者家屬和公司管理、飛航專家的討論和華爾街股價,來說明為何波音公司從一個美國人的安全指標跌下神壇變成讓榮光不在的美國軼夢。
Thumbnail
前言 這是一個使用年報資料來做選股,並且隨時可以進場的投資策略,最重要的理論基礎是相信會有均值回歸的情況。就理論上來說,假如投入的資金夠多(三百萬以上應該就足夠了),理想情況下應該是把符合選股標準的股票都買進,但可惜的是一般人很顯然不會有這樣多的資金。所以還是要把投資標的在進一步縮小才行。