📅  最后修改于: 2023-12-03 15:39:41.475000             🧑  作者: Mango
本题要求实现一个程序,打印所有小于N的数字,且最多包含2个唯一数字。
N
:一个正整数。N
的数字,且包含最多2个唯一数字。以下是一个Python的代码实现:
def print_numbers(n):
"""
打印所有小于N的数字,最多2个唯一数字
"""
for i in range(n):
digits = set(str(i))
if len(digits) <= 2:
print(i)
本题中的算法原理比较简单,即通过循环遍历小于N的数字,然后对每个数字将其转换为字符串,并使用集合数据结构去重,最后判断集合中的元素数量是否小于等于2,如果是,则将该数字打印出来。
由于该算法只涉及到简单的循环和集合操作,因此时间复杂度为$O(n)$,其中$n$为输入数字的大小。
算法中最消耗空间的内容是集合,因此空间复杂度为$O(kn)$,其中$k$为集合中不同字符的数量,最坏情况下$k$为2(即最多只包含2个唯一数字),因此实际空间复杂度为$O(n)$。