【问题标题】:Best algorithm to group and add in a list of following pattern分组和添加以下模式列表的最佳算法
【发布时间】:2018-12-05 18:47:55
【问题描述】:

假设我们在列表中有对象

listOfObjects = [a,b,ob,ob,c,ob,c,ob,c,ob,ob,c,ob]

我们必须将它们分组为

[ob,ob,c,ob,c,ob] from index 2 to 7
[ob,ob,c,ob] from index 9 to 12

组开始如果我们有两个ob在一起,如索引2和7,并且结束'之前c' 有两个 ob 跟随,如在索引 8 有 'c' 后跟两个 'ob'如果列表结束

那么获得上述(在 java 中)的最佳算法是什么?

【问题讨论】:

  • 您正在尝试匹配序列中的连续模式。这在文献中有很好的介绍。请遵循发布指南:在此处发布之前进行在线研究。
  • 如果这里的答案对您有帮助,请接受其中之一。这对您、回答者和SO 的其他用户有很多好处。阅读this

标签: java algorithm data-structures


【解决方案1】:

我假设根据您的“最佳算法”是在时间复杂度方面最佳的算法。

您可以通过简单的一次遍历来完成此任务,跟踪接下来的 3 个元素(当然要注意不要超出列表大小)并通过检查您所说的策略来结束组。如果当前元素旁边没有 3 个元素,您只需结束您的组(如您在策略中指定的那样)

所以这个算法的时间复杂度将是O(n)。没有比这更好的了。

【讨论】:

    【解决方案2】:

    我认为 Stack 是一种合适的数据结构。

    只要把 'ob' 放入栈中就可以了。

    你还需要'count'变量。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-01-06
      • 2016-01-24
      • 2014-07-16
      • 2011-11-11
      • 2022-06-11
      • 1970-01-01
      • 2011-10-07
      • 2011-05-09
      相关资源
      最近更新 更多