当前位置: 首页 > 知识库问答 >
问题:

查找传递所有唯一路径的“最短索引范围”的大小

赫连冠玉
2023-03-14

给定一个字符串数组,查找所有唯一路径传递的“最短索引范围”的大小。

例如,A={E,R,E,R,A,R,T,A},它应该是5。我们可以看到,A[2]=E和A[6]=T的范围包含所有唯一路径。(在这种情况下,E,R,A,T)

我可以用下面的多个循环解决。(由科特林解决。)

fun problem(array: Array<String>): Int {
    if (array.isEmpty()) return 0
    val unique = array.distinct()
    var result = 200000
    for (i in 0 until A.size) {
        val tempSet = HashSet<String>()
        val remaining = A.sliceArray(i until array.size)
        var count = 0

        while (true) {
            tempSet.add(remaining[count])
            if (unique.size == tempSet.size) break
            count++

            if (count == remaining.size) {
                count = 200000
                break
            }
        }

        result = Math.min(result, count + 1)
    }

    return result
}

[R,T,A,R,A,R,E,R]->6。因为[1..6]包含所有唯一路径。(T,A,R,E)

[A,R,R,C,T,E,A,R]->5。因为[2..6]包含所有唯一路径。(R,C,T,E,A)

共有1个答案

蓝昊然
2023-03-14

用“两个指针”的方法可以有效地解决这一问题。

使字典结构包含char作为键,counter作为值(在最简单的case-int数组中)

在0中设置两个索引L和R。

 类似资料:
  • 我有一个加权和无向图,有顶点。其中两个顶点是和。 我需要找到最短的路径,从开始,在结束,并通过G的所有顶点(以任何顺序)。 如何做到这一点? 这不是旅行推销员问题:我不需要访问每个顶点一次,也不想回到第一个顶点。

  • 你好,亲爱的朋友们。 我想在随机图中找到最短路径。我使用boost图形库。据我所知,我需要利用点之间的现有距离构建图形。之后,我需要使用一些算法。。。 正如我所见,Dijkstra的算法实际上是找到从1点到其他点的所有路径。(应该很慢?) A*需要一些额外的数据(不仅仅是距离) 如何找到2点之间的最短路径?我在bgl文件夹中看到了许多最短路径算法标头,但我没有找到如何使用它们的示例。 此外,我可以

  • 在OSMnx中,街道的定向是为了保持单向性,因此,当我尝试使用Networkx查找最短路径时,我得到NetworkXNoPath:No path to(osmid)。如何解决此问题?我需要在具有单向街道的网络中找到最短路径。 见下面的代码:

  • 给定一个包含许多节点的无向加权图,如何计算所有对最短路径的子集? 子集是指图中的一些节点,而不是全部节点(图的顶点子集可以手动指定,也可以通过某种聚类算法指定。所选顶点的数量可能占总顶点的1%~5%)。 Dijkstra或Floyd Warshall可能会计算额外的节点,这对于我的应用程序来说可能不够有效。 是否有算法可以计算出特定节点之间的所有对最短路径并获得良好的性能?

  • 我有以下Java代码,可以在图中找到从一个节点到另一个节点的路径,如何修改它,以便显示所有可能的路径。这里只显示了一条路径,它是一个循环? 输出:路径:[1、2、3、4、1] 对于节点1和4之间的路径,正确的输出应该是: 第一条路径:1- 第二条路径:1- 代码:

  • 本文向大家介绍访问C ++中所有节点的最短路径,包括了访问C ++中所有节点的最短路径的使用技巧和注意事项,需要的朋友参考一下 假设我们有一个带有N个节点的无向连通图,这些节点被标记为0、1、2,...,N-1。图的长度将为N,并且仅当节点i和j连接时,j才与列表graph [i]中的i不完全相同。我们必须找到访问每个节点的最短路径的长度。我们可以在任何节点处开始和停止,可以多次访问节点,并且可以