在向量中找到最长“连续数字”条纹的最快方法是什么?

2024-01-07

我有一个排序的std::vector<int>我想找到这个向量中最长的“连续数字条纹”,然后返回它的长度和条纹中的最小数字。

为您形象化它: 假设我们有:1 3 4 5 6 8 9

我希望它返回:maxStreakLength = 4 and streakBase = 3

有时可能会出现 2 条条纹,我们必须选择哪一条更长。

最好(最快)的方法是什么?我尝试过实现这一点,但在处理向量中的多个条纹时遇到问题。我应该使用临时向量然后比较它们的长度吗?


不,您可以在一次遍历向量中完成此操作,并且仅存储迄今为止找到的最长起点和长度。您还需要比“N”次少得多的比较。 *

提示:如果您已经说过一场 4 长比赛以第 5 个位置 (=6) 结束,那么接下来您需要检查哪个位置?

[*] 留给读者作为练习,计算出可能的 O( ) 复杂度;-)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在向量中找到最长“连续数字”条纹的最快方法是什么? 的相关文章

随机推荐