【问题标题】:All combinations of two numbers [closed]两个数字的所有组合[关闭]
【发布时间】:2020-12-18 19:29:55
【问题描述】:

如果一个整数中的每个数字都是 3 或 7,则它是一个幸运数字。举个例子,数字 7、73 和 33777 是幸运数字。你的任务是计算 int(a) 和 int(b) 之间的幸运数字的数量。

如何在不查看所有数字的情况下有效地(在不到 1 秒的时间内)实现这一目标?我在 Java 中尝试了许多解决方案,但都不够快。

【问题讨论】:

  • 范围是多少?你试过什么代码?什么尝试不够快?
  • 范围为 1
  • 我已经尝试过预先计算金额的代码。假设我预先计算了 1 到 10^8 之间的范围包含 256 个此类案例等
  • 请不要破坏您的问题。反转。
  • 请不要不要破坏您的问题,尤其是在提供答案之后。

标签: java performance time combinations cpu-speed


【解决方案1】:

由于你要数数而不是列出数,你可以使用排列组合来找到答案。

例如,假设在 1 到 999 之间找到可以使用 3、7 的位置

然后您有 3 个长度的单位数、双位数和三位数,并限制单位数和三位数。 对于单人,因为最小数字是 1 和 3,所以 7 都大于 2 个数字。 对于两位数,您没有任何限制,因此您有 2 * 2 = 4 种组合 同样,对于 3 位数字,每个位置允许的最大数字为 9,并且 3,7 小于它们,则 2 * 2 * 2 = 8

所以在将它们全部相加后答案是 14...该算法将运行得很快,因为它取决于要生成的数字的大小,即 o(n) 时间复杂度,其中 n 是数字的最大长度。

【讨论】:

    猜你喜欢
    • 2018-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-26
    • 2021-05-29
    • 1970-01-01
    • 2021-04-10
    • 1970-01-01
    相关资源
    最近更新 更多