有規律字串中的第k個符號 K-th Symbol in Grammar Leetcode #779

閱讀時間約 2 分鐘

題目敘述

這題的題目一個規律變化的二進位字串,問我們第N排,第K個bit是多少?

變化的規律: 上一排的0到下一排展開成01,上一排的1到下一排展開成10

第一排初始化是0

第二排是01

第三排是0110

第四排是01101001

...其餘依此類推

詳細的題目可在這裡看到


測試範例:

Example 1:

Input: n = 1, k = 1
Output: 0
Explanation: row 1: 0

Example 2:

Input: n = 2, k = 1
Output: 0
Explanation:
row 1: 0
row 2: 01

Example 3:

Input: n = 2, k = 2
Output: 1
Explanation:
row 1: 0
row 2: 01

約束條件

Constraints:

  • 1 <= n <= 30
  • 1 <= k <= 2n - 1

演算法

可以觀察生成規律

奇數編號都會和上一排的父節點(N-1, (K+1)/2)的相同

偶數編號都會和上一排的父節點(N-1, (K+1)/2)的相反

raw-image

由這個生成規律,寫出遞迴關係式,藉由遞迴解找出答案。


程式碼

class Solution:
 
 def kthGrammar(self, N: int, K: int) -> int:
  
  if N == 1:
   # Base case:
   return 0
  
  else:
   # General case:
   if K % 2 == 0:
    
    # even index of current level is opposite of parent level's [(K+1)//2]
    return 1 - self.kthGrammar(N-1, (K+1)//2)
   else:
    # odd index of current level is the same as parent level's [(K+1)//2]
    return self.kthGrammar(N-1, (K+1)//2)

複雜度分析

時間複雜度:

O( log k ) 最多往上回溯O(log k)次可以找到答案。

空間複雜度:

O( log k ) 遞迴recursion call stack 最大深度。


關鍵知識點

觀察字串生成規律,找出遞迴關係式。


Reference:

[1] Python/JS/Java/Go/C++ by math [w/ Comment] - K-th Symbol in Grammar - LeetCode

82會員
418內容數
由有業界實戰經驗的演算法工程師, 手把手教你建立解題的框架, 一步步寫出高效、清晰易懂的解題答案。 著重在讓讀者啟發思考、理解演算法,熟悉常見的演算法模板。 深入淺出地介紹題目背後所使用的演算法意義,融會貫通演算法與資料結構的應用。 在幾個經典的題目融入一道題目的多種解法,或者同一招解不同的題目,擴展廣度,並加深印象。
留言0
查看全部
發表第一個留言支持創作者!
題目會給我們一顆二元樹的根結點,要求我們找出每一層最大的節點值。
這題的題目會給我們一個輸入整數,要求我們判斷這個整數是否可以用4^k 的形式來表達?
這題算是路徑計數類的DP衍伸題(路徑數、方法數、組合數...等等這種枚舉類的題目,第一時間切入除了想到DFS+回溯法之外,也可以留意DP動態規劃解題的可能性) 題目會給我們一個指定長度為arrLen的陣列,起點從index=0開始出發,每次移動可以往左移一格,往右移一格,或是留在原地不
題目會給定兩個字串s,t,把裡面的井字號#視為鍵盤上的backspace,往前(往左方)吃掉最靠近的字元。 請位最後全部依照規則處理完以後,s,t剩下的字串內容兩者是否相等?
題目會給我們節點總數目n、左子樹的關係陣列、右子樹的關係陣列,要求我們驗證在給定的條件下,能不能構成一顆合法的二元樹。
題目會給定我們一組十進位表示法的阿拉伯數字,要求我們把它轉換為對應的羅馬數字。
題目會給我們一顆二元樹的根結點,要求我們找出每一層最大的節點值。
這題的題目會給我們一個輸入整數,要求我們判斷這個整數是否可以用4^k 的形式來表達?
這題算是路徑計數類的DP衍伸題(路徑數、方法數、組合數...等等這種枚舉類的題目,第一時間切入除了想到DFS+回溯法之外,也可以留意DP動態規劃解題的可能性) 題目會給我們一個指定長度為arrLen的陣列,起點從index=0開始出發,每次移動可以往左移一格,往右移一格,或是留在原地不
題目會給定兩個字串s,t,把裡面的井字號#視為鍵盤上的backspace,往前(往左方)吃掉最靠近的字元。 請位最後全部依照規則處理完以後,s,t剩下的字串內容兩者是否相等?
題目會給我們節點總數目n、左子樹的關係陣列、右子樹的關係陣列,要求我們驗證在給定的條件下,能不能構成一顆合法的二元樹。
題目會給定我們一組十進位表示法的阿拉伯數字,要求我們把它轉換為對應的羅馬數字。
你可能也想看
Thumbnail
重點摘要: 1.9 月降息 2 碼、進一步暗示年內還有 50 bp 降息 2.SEP 上修失業率預期,但快速的降息速率將有助失業率觸頂 3.未來幾個月經濟數據將繼續轉弱,經濟復甦的時點或是 1Q25 季底附近
Thumbnail
近期的「貼文發佈流程 & 版型大更新」功能大家使用了嗎? 新版式整體視覺上「更加凸顯圖片」,為了搭配這次的更新,我們推出首次貼文策展 ❤️ 使用貼文功能並完成這次的指定任務,還有機會獲得富士即可拍,讓你的美好回憶都可以用即可拍珍藏!
Thumbnail
長期投資人,📒需要遵守操作計畫以及進出紀律,當你擬定好計畫後,務必確實遵守。 持續遵守計畫,😊我們就會常常遇到市場給糖🍬
Thumbnail
健康是一個我們最常聽到很高大尚,但感覺離我們很遙遠的議題,「 有規律的生活原是健康與長壽的秘訣 ─巴爾札克」但真的是如此嗎? 如今大谷翔平完美詮釋了這段話,最令人佩服的地方在於他鉅細靡遺的計畫和超強執力,每天確實的執行,自律的完成所有的項目,每天都感受到進步,一步步成長成今天令人驚嘆的棒球英雄。
Thumbnail
等了好久,奧塞美術館的第二篇終於來了,這一次就要帶著大家進入這間美術館了! 大家都知道巴黎有很多的美術館和博物館,如果想要看完全部的藝術作品,可能就算從今天起開始住在巴黎,一間一間的看,到大家成為老爺爺、老奶奶之前,應該都看不完。
Thumbnail
看藝術的博物館介紹時間又來啦!這一次,想要跟大家分享的是位在法國巴黎的奧賽美術館,這一間也是我排名前五的美術館。在巴黎,我心目中最喜歡的兩間美術館,一間是展出大量當代藝術的東京宮(Palais de Tokyo)。另一間,就是奧賽美術館了!
Thumbnail
八點多就想睡、也能睡的日子,是需要滿足某些條件的。 比如說,準時下班,已經吃完晚餐了、洗完澡了,還有心裡是平靜的,或者是,又下雨了,涼涼的很好睡。 室友回來了,在準備明天的便當,滿屋子香氣,覺得這樣平實的日常,蠻好的。 圖文不符之是某個週末的早餐,蘋果上的那一坨是熟成優格不是冰淇淋啊!
Thumbnail
相信不少做國際黃金交易的朋友都知道,國際黃金市場交易時間可以分為亞盤、歐盤和美盤三個時段。那麼在這三個時段當中,行情波動會有各自的規律,具體是怎樣的呢?今天我們來瞭解一下。
Thumbnail
大部分的台灣家長,聽到語嫣分享嬰幼兒晚上健康的就寢時間是晚上七點時,通通都崩潰說:「這不合理吧!太早了吧!」 但這個「小孩就是需要早睡」的觀念,在國外的父母第一課來說,是很正常的! 而影集中所舉的範例,是一名四歲的小孩。 而今天想要討論關於面對作息的心態。 但是他們父子倆個感情依然非常好。
Thumbnail
重點摘要: 1.9 月降息 2 碼、進一步暗示年內還有 50 bp 降息 2.SEP 上修失業率預期,但快速的降息速率將有助失業率觸頂 3.未來幾個月經濟數據將繼續轉弱,經濟復甦的時點或是 1Q25 季底附近
Thumbnail
近期的「貼文發佈流程 & 版型大更新」功能大家使用了嗎? 新版式整體視覺上「更加凸顯圖片」,為了搭配這次的更新,我們推出首次貼文策展 ❤️ 使用貼文功能並完成這次的指定任務,還有機會獲得富士即可拍,讓你的美好回憶都可以用即可拍珍藏!
Thumbnail
長期投資人,📒需要遵守操作計畫以及進出紀律,當你擬定好計畫後,務必確實遵守。 持續遵守計畫,😊我們就會常常遇到市場給糖🍬
Thumbnail
健康是一個我們最常聽到很高大尚,但感覺離我們很遙遠的議題,「 有規律的生活原是健康與長壽的秘訣 ─巴爾札克」但真的是如此嗎? 如今大谷翔平完美詮釋了這段話,最令人佩服的地方在於他鉅細靡遺的計畫和超強執力,每天確實的執行,自律的完成所有的項目,每天都感受到進步,一步步成長成今天令人驚嘆的棒球英雄。
Thumbnail
等了好久,奧塞美術館的第二篇終於來了,這一次就要帶著大家進入這間美術館了! 大家都知道巴黎有很多的美術館和博物館,如果想要看完全部的藝術作品,可能就算從今天起開始住在巴黎,一間一間的看,到大家成為老爺爺、老奶奶之前,應該都看不完。
Thumbnail
看藝術的博物館介紹時間又來啦!這一次,想要跟大家分享的是位在法國巴黎的奧賽美術館,這一間也是我排名前五的美術館。在巴黎,我心目中最喜歡的兩間美術館,一間是展出大量當代藝術的東京宮(Palais de Tokyo)。另一間,就是奧賽美術館了!
Thumbnail
八點多就想睡、也能睡的日子,是需要滿足某些條件的。 比如說,準時下班,已經吃完晚餐了、洗完澡了,還有心裡是平靜的,或者是,又下雨了,涼涼的很好睡。 室友回來了,在準備明天的便當,滿屋子香氣,覺得這樣平實的日常,蠻好的。 圖文不符之是某個週末的早餐,蘋果上的那一坨是熟成優格不是冰淇淋啊!
Thumbnail
相信不少做國際黃金交易的朋友都知道,國際黃金市場交易時間可以分為亞盤、歐盤和美盤三個時段。那麼在這三個時段當中,行情波動會有各自的規律,具體是怎樣的呢?今天我們來瞭解一下。
Thumbnail
大部分的台灣家長,聽到語嫣分享嬰幼兒晚上健康的就寢時間是晚上七點時,通通都崩潰說:「這不合理吧!太早了吧!」 但這個「小孩就是需要早睡」的觀念,在國外的父母第一課來說,是很正常的! 而影集中所舉的範例,是一名四歲的小孩。 而今天想要討論關於面對作息的心態。 但是他們父子倆個感情依然非常好。