📌  相关文章
📜  找出从 1 到 N 恰好包含 k 个非零数字的数字(1)

📅  最后修改于: 2023-12-03 14:54:34.894000             🧑  作者: Mango

找出从 1 到 N 恰好包含 k 个非零数字的数字

这道题的意思是要求找出从1到N的所有数字中恰好包含k个非零数字的数字。例如,当N为15且k为2时,正确的答案为11。

思路

我们可以将每个数字转换为字符串,然后遍历每个字符串并计算其中非零数字的数量。如果计数器达到k,则将该数字添加到结果列表中。

代码示例

下面是使用Python 3编写的示例代码:

def count_non_zero_digits(n):
  count = 0
  while n != 0:
    if n % 10 != 0:
      count += 1
    n = int(n / 10)
  return count

def find_numbers(n, k):
  result = []
  for i in range(1, n + 1):
    if count_non_zero_digits(i) == k:
      result.append(i)
  return result
复杂度分析

上述代码中,我们使用了一个循环来遍历每个数字,并使用一个辅助函数来计算每个数字中的非零数量。因此,时间复杂度为O(N×log(N)),其中N是从1到N的数字的数量。此外,我们使用一个列表来存储结果数字,其空间复杂度为O(M),其中M是结果数字的数量。