我接受了采访,问题是如何获得重复小数的长度?
例如
sara (3 keys)
jhon (1 key)
我试图编写代码
1/3=0.3333..., it returns 1,
5/7=0.7142857142857143, it returns 6, since 714285 is the repeating decimal.
1/15=0.066666666666666, it returns 1.
17/150=0.11333333333333333, it returns 1. since 3 is the repeating decimal.
但是,我的代码无法通过所有测试。而且它的时间复杂度是O(n * logn)。如何改进并使其时间复杂度为O(n)?
答案 0 :(得分:2)
可能正确的方法是遵循@Henry建议的数学堆栈交换链接。但是关于你的代码,这里是我的优化版本。这里的关键点是使用字典而不是数组 - 在这种情况下Attempt 0=Shoes1
Attempt 1=Shoes1
Attempt 2=Shoes1
Attempt 3=Shoes3
Attempt 4=Shoes3
Attempt 5=Shoes3
Attempt 6=Shoes5
Attempt 7=Shoes5
Attempt 8=Shoes5
Attempt 9=Shoes7
操作要快得多。
in
在29/39916801的计算机上,此代码在几秒钟内完成计算。