440. 字典序的第K小数字

https://leetcode-cn.com/problems/k-th-smallest-in-lexicographical-order/

解法一:dfs暴力(超时)

先dfs回溯法求出字典序数组,然后返回k-1号元素:

class Solution:
    def findKthNumber(self, n: int, k: int) -> int:
        self.nums = []
        for i in range(1, 10):  #第一位不能为0
            self.dfs(i, n)  #从第二位开始dfs回溯
        return self.nums[k-1]
    def dfs(self, cur, n):
        if cur > n:  #超出则剪枝
            return
        self.nums.append(cur)
        cur = cur * 10
        for i in range(10):
            self.dfs(cur + i, n)

解法二:

参考

https://leetcode-cn.com/problems/k-th-smallest-in-lexicographical-order/solution/ben-ti-shi-shang-zui-wan-zheng-ju-ti-de-shou-mo-sh/

最后更新于