用 Python 生成前 n 个字典序数的程序


假设我们有一个数字 n,我们必须找出按字典序排序的前 n 个数字。

因此,如果输入为 n = 15,则输出将为 [1, 10, 11, 12, 13, 14, 15, 2, 3, 4, 5, 6, 7, 8, 9]

为了解决这个问题,我们将按照以下步骤操作

  • count := 1
  • ans := 一个包含单元素 count 的列表
  • 当 ans 的大小 < n 时,执行
    • count := count * 10
    • 当 count > n 时,执行
      • count := count 的商除以 10
      • count := count + 1
      • 当 count 模 10 等于 0 时,执行
        • count := count 的商除以 10
      • 在 ans 末尾插入 count
  • 返回 ans

让我们看一下以下实现来获得更好的理解

示例代码

实时演示

class Solution:
   def solve(self, n):
      count = 1
      ans = [count]

      while len(ans) < n:
         count *= 10
         while count > n:
            count = count // 10
            count += 1
            while count % 10 == 0:
               count = count // 10
               ans.append(count)
            return ans

ob = Solution()
n = 15
print(ob.solve(n))

输入

15

输出

[1, 10, 11, 12, 13, 14, 15, 2, 3, 4, 5, 6, 7, 8, 9]

更新于: 25-11-2020

295 次浏览

启动您的职业生涯

完成课程,获得认证

开始
广告