1

我在一次采访中被问到以下问题。我不知道如何解决这个问题。有什么建议么?

给定开始和结束整数作为用户输入,生成具有以下属性的所有整数。

例子:

123 , 1+2 = 3 , valid number
121224 12+12 = 24 , valid number
1235 1+2 = 3 , 2+3 = 5 , valid number
125 1+2 <5 , invalid number
4

2 回答 2

2

实现这一点的几种方法是:

  1. 测试输入范围内的每个数字,看看它是否符合条件。

  2. 仅生成符合条件的数字。对两个起始值使用嵌套循环,将循环索引的总和附加到循环索引以得出合格数。当附加数字超过上限时退出内部循环。

第二种方法可能计算效率更高,但第一种方法更易于编写和维护,并且是 O(n)。

我不知道面试官在寻找什么,但我怀疑沟通能力比答案更重要。

于 2012-11-02T15:13:02.050 回答
1

解决这个问题的简单方法是迭代设置范围内的数字,将数字解析为数字序列,然后根据规则测试序列。有一个优化,该问题本质上要求您找到斐波那契数,因此您可以使用两个变量或寄存器并按顺序添加它们。

从您的问题中不清楚组件编号是否必须具有相同的位数。如果没有,那么您将必须生成组件编号排列的所有组合。

于 2012-11-02T15:15:48.713 回答