在第一行我们写上一个 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
const help = (n, k )=>{
if(!n)return 0
let flag = k %2;
// return flag? help(n-1, k/2 |0) :Math.abs( help(n-1,k/2 |0)-1)
return Math.abs( help(n-1,Math.ceil(k/2))-1+flag )
}
return help(n, k)
}
function diedai(n,k){
let map = {0:'01', 1:'10'}
let dp = [['0']];
let pre =['0'], temp =[]
for(let i =1;i<= n ;i++ ){
temp=[]
pre.forEach(item => temp.push(...map[item]) )
pre = temp ;
}
return pre[n][k-1]
};