Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Chương trình tạo n số đầu tiên theo thứ tự lexicographic trong Python

Mô tả bài toán

Cho số nguyên n. Tìm n số đầu tiên khi sắp xếp theo thứ tự từ điển (lexicographic).

Ví dụ: n = 15 → đầu ra [1, 10, 11, 12, 13, 14, 15, 2, 3, 4, 5, 6, 7, 8, 9].

Giải thuật

  1. Khởi tạo count = 1, ans = [count].
  2. Khi độ dài ans < n:
    • count *= 10.
    • Trong khi count > n:
      • count //= 10.
      • count += 1.
      • Trong khi count % 10 == 0: count //= 10.
    • Thêm count vào ans.
  3. Trả về ans.

Ví dụ mã Python

class Solution:
    def solve(self, n):
        count = 1
        ans = [count]
        while len(ans) < n:
            count *= 10
            while count > n:
                count //= 10
                count += 1
                while count % 10 == 0:
                    count //= 10
            ans.append(count)
        return ans

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

Đầu vào

15

Đầu ra

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