【问题标题】:Determining order of traversal of a sequence确定序列的遍历顺序
【发布时间】:2015-04-23 01:28:05
【问题描述】:

我有一个从 1 到 30 升序排列的元素列表。 该列表可能包含也可能不包含所有 30 个元素。你可以开始了 从任意点遍历列表,一旦到达终点,就可以跳转 并从另一端恢复遍历,即沿着 循环队列的行。

给定两个连续的元素(按位置,可能按值,也可能不按值), 是否可以确定遍历的方向,即开始 结束,还是相反?

注意:您无权访问列表的索引,只能获得 任何时刻的值。

我可以用三个值来做到这一点,但不是两个。

【问题讨论】:

  • 想知道为什么这被否决了吗?
  • 我不是被否决的人,但原因是这与编程无关。

标签: c++ list stl


【解决方案1】:

不,仅给定两个元素就无法确定遍历的方向。您的条件允许以下列表:[1, 30]

您现在有两个连续的元素:1, 30。您是从1 开始然后向右移动到达30,还是向左移动并绕行到达30?这是不可能的。

【讨论】:

  • 这正是我想知道的。那么,如果我使用第三个元素来做到这一点,而我没有得到一个,那么通过选择哪个值以及给定的两个值,我是否能够实现逻辑?
  • 使用列表[1, 30],您无法使用任意数量的元素来判断方向:从1 开始,无论哪种方式都会导致1 - 30 - 1 - 30 - 1.... 单项列表@ 987654329@ 它是3 - 3 - 3 - 3 - 尽管方向....
  • @thenoGk 我不知道第二句话想说什么。
  • @Adam:我只有两个值。它们按索引是连续的。使我能够确定方向的第三个值应该是什么?
  • 你需要至少三个元素的列表中的三个值。
【解决方案2】:

仅从一个列表中获取两个值是无法实现您想要的。您需要三个连续的值,此外列表中必须至少有 3 个项目(请参阅我在@Adam 的答案下的评论)。

【讨论】:

    猜你喜欢
    • 2020-07-16
    • 1970-01-01
    • 2015-09-07
    • 2013-05-29
    • 1970-01-01
    • 1970-01-01
    • 2023-03-14
    • 2015-03-28
    • 1970-01-01
    相关资源
    最近更新 更多