LeetCode 779 第K個語法符號 遞迴解法

2021-10-02 13:25:05 字數 1070 閱讀 9203

在第一行我們寫上乙個 0。接下來的每一行,將前一行中的0替換為01,1替換為10。

給定行數 n 和序數 k,返回第 n 行中第 k個字元。(k從1開始)

例子:輸入: n = 1, k = 1

輸出: 0

輸入: n = 2, k = 1

輸出: 0

輸入: n = 2, k = 2

輸出: 1

輸入: n = 4, k = 5

輸出: 1

解釋:第一行: 0

第二行: 01

第三行: 0110

第四行: 01101001

注意:n 的範圍 [1, 30].

k 的範圍 [1, 2^(n-1)].

這一行的第n個字元是由上一行第(n+1)/2個字元決定的

例:第三行: 0110

第四行: 01101001

第四行第1,2個字元是由第三行第1個字元決定的

第四行第3,4個字元是由第三行第2個字元決定的

第四行第5,6個字元是由第三行第3個字元決定的

第四行第7,8個字元是由第三行第4個字元決定的

求取第n行第k個字元,轉變為求取第n-1行第(k+1)/2個字元

如果第n-1行第(k+1)/2個字元為1,k為奇數,那麼第n行第k個字元為1

如果第n-1行第(k+1)/2個字元為0,k為奇數,那麼第n行第k個字元為0

如果第n-1行第(k+1)/2個字元為1,k為偶數,那麼第n行第k個字元為0

如果第n-1行第(k+1)/2個字元為1,k為偶數,那麼第n行第k個字元為1

遞迴邊界:n=0,第一行一定是0,return 0

class

solution

if(k%2==

0)else

}else

else}}

};

LeetCode779 第K個語法符號

在第一行我們寫上乙個0。接下來的每一行,將前一行中的0替換為01,1替換為10。給定行數n和序數k,返回第n行中第k個字元。k從1開始 例子 輸入 n 1,k 1輸出 0輸入 n 2,k 1輸出 0輸入 n 2,k 2輸出 1輸入 n 4,k 5輸出 1解釋 第一行 0 第二行 01 第三行 011...

LeetCode 779 第K個語法符號

在第一行我們寫上乙個 0。接下來的每一行,將前一行中的0替換為01,1替換為10。給定行數 n 和序數 k,返回第 n 行中第 k個字元。k從1開始 例子 輸入 n 1,k 1 輸出 0 輸入 n 2,k 1 輸出 0 輸入 n 2,k 2 輸出 1 輸入 n 4,k 5 輸出 1 解釋 第一行 0...

leetcode779 第k個語法符號。

直接找規律。第一行 0 第二行 01 第三行 0110 第四行 01101001 可以發現,第n行的數量比第n 1行多了一倍,並且前半部分是和第n 1行一樣的,後半部分是前半部分 按位取反 得到的。第n行的字元數量是2 n 1 個,因此第n 1行的數量就是2 n 2 個。公式為 func n,k f...