【问题标题】:Finding 3-Digit Suffixes查找 3 位后缀
【发布时间】:2016-06-25 09:19:06
【问题描述】:

我在测试中遇到了这个问题,但我不知道如何“思考问题”,也不是这种类型的问题与有效的执行时间..

数字 x 被称为 y 的“后缀”,只有当 y 是通过在数字左侧添加至少一位数字从 x 中获得时。示例:502 是 11502 的后缀,因为如果您在“502”前面添加“11”,则会得到数字“11502”。 一个文本文件包含一个数字数组,最多 1.000.000.000 个数字,每个数字必须从 0 到 1.000.000.000。在屏幕上显示,严格升序,数组中的每个数字,属于[100到999],它是数组中至少一个数字的后缀。如果数组不包含后缀编号,则在屏幕上显示“无后缀编号”消息。 该算法必须在执行时有效。

如果我们有这个数组“11502 49 54321 6149 76149 123 123 502 4321 321 321”,那么结果必须是“321 502”

【问题讨论】:

  • 你不是说502是11502的后缀吗?您带来的示例似乎与“后缀”的公认用法相反。
  • 你说得对,我编辑了我的问题

标签: algorithm processing-efficiency


【解决方案1】:
  • 创建一个包含 1000 个布尔元素条目的数组 has_suffix,并将每个元素设置为 False

  • 遍历每一行。对于一行中的每个数字i,如果超过999,则找到最后三位i_,并设置has_suffix[i_] = True

    • 如果遇到 2199,请设置 has_suffix[199] = True。例如:

    • 如果遇到132,忽略它。

    • 如果遇到23,忽略它。

  • 创建一个数组 suffix,其中包含 1000 个布尔元素的条目,每个元素设置为 False

  • 在每一行上再次迭代。对于一行中的每一个数字i,如果在100到999之间且has_suffix[i] == True,则设置suffix[i] = True。例如:

    • 如果遇到 2199,请忽略它。

    • 如果遇到23,忽略它。

    • 如果您在 132 中运行,请检查 has_suffix[132]。如果是True,则设置suffix[132] = True

  • 从 100 到 999 遍历 suffix 的条目,并打印出 True 条目的索引。例如,

    • 如果 True 的唯一索引是 321 和 502,则打印“321”和“502”。

【讨论】:

  • 举几个例子有助于澄清你的意思
  • 感谢您的提示。
  • @KevinWells 查看示例。
  • 遇到2199为什么要设置has_suffix[999] = True,不应该设置has_suffix[199] = True吗?
  • @KevinWells 感谢您的更正(更新) - 这是一个错字。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-27
  • 2012-07-31
  • 2017-02-03
  • 2021-12-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多