Leetcode——第K個語法符號??
阿新 • • 發佈:2020-06-27
在第一行我們寫上一個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
暴力法:
class Solution { public: int kthGrammar(int N, int K) { N = N-1; vector<int> last(1<<N); last[0] = 0; for(int i=1; i<=N; i++){ for(int j=(1<<(i-1))-1; j>=0; j--){ last[2*j] = last[j]; last[2*j+1] = 1-last[j]; } } return last[K-1]; } };
時間、空間複雜度
哇。。。。遞迴,超級優秀:
class Solution { public: int kthGrammar(int N, int K) { if(N == 1) return 0; int G = kthGrammar(N-1, (K+1)/2); if(K%2 == 1){ return G; }else{ return 1-G; } } };