[Python手撕]字典序的第K小数字

class Solution:
    def findKthNumber(self, n: int, k: int) -> int:

        def findk(n,k):

            def countsteps(prefix,n):
                start = prefix
                end = prefix+1
                steps = 0

                while start <= n:
                    steps += min(n+1,end)-start
                    start *= 10
                    end *= 10
                
                return steps
            

            current = 1
            k -= 1

            while k > 0:
                steps = countsteps(current, n)
                if steps <= k:
                    current += 1
                    k -= steps
                elif steps > k:
                    current *= 10
                    k -= 1
            
            return current


        return findk(n,k)

作者:Esofar

出处:https://www.cnblogs.com/DCFV/p/18441559

版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。

posted @   Duancf  阅读(3)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
more_horiz
keyboard_arrow_up dark_mode palette
选择主题
点击右上角即可分享
微信分享提示