刷題系列 - K-th 語法
這個題目有點繞,其實很簡單。
題目是一行都是隻有0或者1兩個元素,下一行是當前的轉變,0的元素變為01,1的元素變為10。
舉例如下,那麼給出行數N,和橫向位數K,那個元素是0還是1.
比如如下給出N是4,K是5,那個元素就是1。
Explanation:
row 1: 0 row 2: 01 row 3: 0110 row 4: 01101001
其實這個問題某種意義上就是簡單版的帕斯卡三角,如果頭鐵一層一層遞迴下來當然可以,不過效率太低了。
分析了下,其實對於當前行的橫向位數K,就是上一行向上取整K/2位的元素的轉變過來的,如果上一個是0,則是0或者1,如果若非偶數,就是0,如果偶數就是1;對於1,非偶數則是1,偶數是0。按照這個道理遞迴即可。
程式碼如下,int((K+1)/2)是為了向上取整。
class Solution: def kthGrammar(self, N: int, K: int) -> int: defuatN = 4 defautRow = '01101001' if K < 8: return int(defautRow[K-1]) else: if K%2 == 1: re = self.kthGrammar(N-1,int((K+1)/2)) else: re = 0 if self.kthGrammar(N-1,int((K+1)/2)) == 1 else 1 return re
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22259926/viewspace-2677569/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Leetcode刷題系列彙總LeetCode
- 刷題記錄(C語言)01C語言
- 【Jenkins系列】-Pipeline語法全集Jenkins
- K-th 問題的一般思路
- redis系列(二)- 語法與命令Redis
- 劍指Offer系列刷題筆記彙總筆記
- vscode刷leetcode無法登入的問題VSCodeLeetCode
- goroutine 語法問題Go
- markdown 標題語法
- D - K-th NearestREST
- iOS 開發刷題系列三:NSString 引用計數iOS
- 刷題
- LeetCode 刷題記錄(16、17、18)—Java語言LeetCodeJava
- Go編譯原理系列4(語法分析)Go編譯原理語法分析
- 關於刷表法
- 刷題10.10
- Gradle入門系列(二)——groovy高階語法Gradle
- Gradle入門系列(一)——groovy基礎語法Gradle
- Jenkins系列之pipeline語法介紹與案例Jenkins
- Go編譯原理系列2(詞法分析&語法分析基礎)Go編譯原理詞法分析語法分析
- LeetCode 刷題指南(一):為什麼要刷題LeetCode
- 【程式設計大賽刷題記錄】C語言 06程式設計C語言
- 【程式設計大賽刷題記錄】C語言 02程式設計C語言
- 刷題系列 - Python判斷是否映象對稱二叉樹Python二叉樹
- [20200227]使用tcpdump or and ()語法問題.txtTCP
- mysql刷題題後感MySql
- 每日刷題 3.17
- 刷題學習
- LeetCode 刷題—樹LeetCode
- LeetCode刷題 堆LeetCode
- MISC刷題12
- 刷題記錄
- 順序刷題
- LeetCode刷題整理LeetCode
- leetcode刷題(一)LeetCode
- 刷題系列 - Python用遞迴實現求二叉樹深度Python遞迴二叉樹
- 刷題系列 - Python實現二叉樹按層級遍歷Python二叉樹
- 刷題系列 - 計算爬樓梯不同步數的方法數