让我们考虑列表中有对象
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中)的最佳算法是什么?
答案 0 :(得分:0)
我认为Stack是合适的数据结构。
将“ ob”放入堆栈中就可以了。
还需要'count'变量。
答案 1 :(得分:0)
我认为您认为“最佳算法”是在时间复杂度方面最佳的算法。
您可以通过简单地一次遍历并跟踪接下来的3个元素(当然要确保您不会超出列表大小)来完成此任务,并通过检查您说的策略来结束小组。如果当前元素旁边没有3个元素,则只需结束组(如您在策略中指定的那样)
因此,该算法的时间复杂度为O(n)
。没有比这更好的东西了。