【问题标题】:What's the most optimal way to find 4 consecutive equal chars in a multidimensional array?在多维数组中找到 4 个连续相等字符的最佳方法是什么?
【发布时间】:2020-09-19 18:46:28
【问题描述】:

挑战是用尽可能最优的算法在水平、垂直或对角线方向上找到 4 个连续相等的字符。

例如,如果我们有这个矩阵:

[

['L','T','G','C','T','A'],

['X','A','G','T','G','A'],

['T','R','T','K','G','A'],

['A','T','A','M','G','A'],

['C','C','C','C','T','G'],

['V','C','D','C','T','W']

]

算法应该找到AAAA(垂直)、CCCC(水平)和TTTT(倒角)。

你会怎么做?可以使用任何编程语言。

提前致谢!

【问题讨论】:

  • 我认为任何天真的算法都会花费O(M) 时间来完成这项任务(M 数组中的元素数量),而且你不可能做得更好,因为您必须至少访问一次阵列的所有单元。因此,如果任务不是关于实现速度而是关于O 表示法,我会说一个简单而幼稚的方法可以完成这项工作。

标签: arrays algorithm performance optimization logic


【解决方案1】:

这是一个用重复字符串修改的 Boogle 板问题。

我相信你可以在O(N*M)时间解决N:列数和M:行数。

您可以做的方法是在已匹配字符串中使用内存并标记为已访问的 BFS。

在此链接中,您可以看到带有字典的实现。您需要进行修改以获取重复的字符串o 次:https://gist.github.com/davidreynolds/2865498

【讨论】:

    猜你喜欢
    • 2016-11-07
    • 2013-08-19
    • 2021-05-20
    • 1970-01-01
    • 2015-02-26
    • 1970-01-01
    • 2012-10-09
    • 2013-03-03
    • 1970-01-01
    相关资源
    最近更新 更多