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
- Khởi tạo
count = 1,ans = [count]. - Khi độ dài
ans<n:count *= 10.- Trong khi
count > n:count //= 10.count += 1.- Trong khi
count % 10 == 0:count //= 10.
- Thêm
countvàoans.
- 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]