题目链接 https://leetcode-cn.com/problems/number-of-digit-one/description/
题目:
分析:
动态规划的减而治之问题,将规模为N的问题转化为解决规模为N-1的问题。
观察到,当N大于1时,此时这一行的奇数位的数和替换它的数是相同的,而偶数位的数和替换它的数相反(0和1相反)。
举例:第4行第7位(奇数位),数字是0,和替换它的第3行第4位,是相同的(都是0);
第3行第4位(偶数位),数字是0,和替换它的第2行第2位(数字1),是相反的。
代码:
class Solution {
public int kthGrammar(int N, int K) {
if(N == 1)
return 0;
int nRes = -1;
if (K % 2 == 1)
{
nRes = kthGrammar(N - 1, (K + 1) / 2);
}
else
{
nRes = 1 - kthGrammar(N - 1, (K + 1) / 2);
}
return nRes;
}
}