Java 分组并添加以下模式列表的最佳算法 让我们考虑列表中的对象为 listOfObjects = [a,b,ob,ob,c,ob,c,ob,c,ob,ob,c,ob]

Java 分组并添加以下模式列表的最佳算法 让我们考虑列表中的对象为 listOfObjects = [a,b,ob,ob,c,ob,c,ob,c,ob,ob,c,ob],java,algorithm,data-structures,Java,Algorithm,Data Structures,我们必须把它们归为一组 [ob,ob,c,ob,c,ob] from index 2 to 7 [ob,ob,c,ob] from index 9 to 12 i、 e如果我们一起有两个ob,如索引2和7,则组开始,并且在'c'后面有两个ob之前结束,如索引8后面有两个ob,如列表结束,则结束 那么,在java中,获得上述内容的最佳算法是什么呢?我认为堆栈是一种合适的数据结构 一旦你把“ob”放进堆栈里,它就没事了 您还需要“count”变量。我假设您所说的“最佳算法”在时间复杂度方面是最优的

我们必须把它们归为一组

[ob,ob,c,ob,c,ob] from index 2 to 7
[ob,ob,c,ob] from index 9 to 12
i、 e如果我们一起有两个ob,如索引2和7,则组开始,并且'c'后面有两个ob之前结束,如索引8后面有两个ob,如列表结束,则结束


那么,在java中,获得上述内容的最佳算法是什么呢?

我认为堆栈是一种合适的数据结构

一旦你把“ob”放进堆栈里,它就没事了

您还需要“count”变量。

我假设您所说的“最佳算法”在时间复杂度方面是最优的

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


因此,该算法的时间复杂度为
O(n)
。不可能比这更好。

您正在尝试匹配序列中的连续模式。这在文献中有很好的论述。请遵循发帖指南:在这里发帖之前进行在线调查。如果这里的答案对你有帮助,请接受其中一个。这对您、回答者和其他用户都有很多好处。阅读