LeetCode779 第K個語法符號

2021-08-22 11:37:53 字數 1227 閱讀 3694

在第一行我們寫上乙個0。接下來的每一行,將前一行中的0替換為011替換為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以指數倍增長的,會超時。

我們沒有必要求出來整個字串是什麼樣子,比如我們求第11行的1000個數字是0還是1,那麼第11行的第1000個數字 a 是根據哪兒來的呢,是依照第10行的第500個數字 b 而來,如果 b 為 0 ,那麼 a 為 1,否則 a 為 0; b 又是依照 9行250個數字 c 來,數字才依照 8 行 125數字 d 來, d 依照 7 行 63 e 來(125,126都是根據e,但不同的是 e 比方說為0 , 那麼 125 126分別為 0 1)……按此規律下去。

k 為偶數時,它的值 =n-1行的 k/2  == 0 ? 1 :0

k 為奇數時,它的值 =n-1行的 (k+1)/2 == 0 ?  0 : 1

class solution else 

}}

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...

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...