我正在尝试为给定场景确定一个解决方案(最好是java):
输入:
二进制字符串:例如“1001”
n—迭代次数
k-字符串索引位置
每次迭代后,所有的1变为“01”,0变为“10”。
初始值/输入-->“1001”
第1次迭代后-->“0110101”
第二次迭代后-->“1001011001101001”
...
...
在第n次迭代之后-->“100101011……[kth index value]……00101010111..”(在这里,我们的程序需要找到第k个索引值,即0或1)
输出:n次迭代后第k个索引处的值(0或1)。
1条答案
按热度按时间twh00eeo1#
在n次迭代之后,每个原始数字变成2n个数字,所以跳过数字直到接近k。
e、 g.输入
"1001"
,N=3
,K=20
,第1个数字变成8个数字,所以如果我们跳过这8个数字两次,即跳过2个原始数字=16 k,我们就到了第3个原始数字(a)0
),还有一个K=4
.然后我们对这个数字进行迭代,得到
0
->"10"
. 我们现在可以用输入重新启动操作"10"
,N=2
,K=4
.重复直到完成。在o(n)中的解,与输入长度或k值无关。
当然,您可以强制它,但在更高的值下,这不会很好地执行,因为解决方案是o(l*2n),具有
L
作为输入长度。上述解决方案的紧凑版本: