如何解决两个数字的所有组合
如果整数中的每个数字都是3或7,则它是一个幸运数字。例如,数字7、73和33777是幸运数字。您的任务是计算int(a)和int(b)之间的幸运数字数量。
一个人如何在不经历所有数字的情况下(不到1秒)有效地实现这一目标?我已经尝试了许多Java解决方案,但是它们都不够快。
解决方法
由于您必须计算数字而不是列出数字,因此可以使用排列和组合来找到答案。
例如,假设在1到999之间找到可以使用3、7的位置
然后,您具有3个长度的单位数,两位数和三位数,并限制了一位数和三位数。 对于单个,因为最小数是1和3,所以7和2都更大,因此最小数是2。 对于两位数,您没有限制,因此您有2 * 2 = 4个组合 同样,对于3位数字,每个位置允许的最大数字为9,而小于3,7的数字则为2 * 2 * 2 = 8
求和全部后答案为14 ...该算法将快速运行,因为它取决于要生成的数字的大小,即o(n)时间复杂度,其中n是最大数字长度。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。