【问题标题】:Common values in sequence around a given postion围绕给定位置按顺序排列的公共值
【发布时间】:2020-08-14 07:52:42
【问题描述】:

想出了这个问题,但我不知道这是否有一个非暴力的答案。 以下问题的最佳解决方案是什么? 考虑两个字符串数组,

Array1 = ['2','3','156','15','*','11','13','34','65','78']
Array2 = ['3','2','15','67','13','34','54','67','89']

找到 S1 和 S2 使得 Array1.IndexOf(S1) < Array1.IndexOf('*') < Array1.IndexOf(S2) && Array2.IndexOf(S1) < Array2.IndexOf(S2)

【问题讨论】:

    标签: algorithm data-structures dynamic-programming


    【解决方案1】:

    第 1 步:将 '*' 之前的 arr1 值索引为 1,将 '*' 之后的值索引为 2。

    第2步:循环遍历arr2,首先找到索引为1的字符串,然后找到索引为2的字符串。

    如果没有找到对,则 S2 的值或两者都为 -1。

    时间复杂度: O(n)

    空间复杂度: O(n)

    arr1 = ['2','3','156','15','*','11','13','34','65','78']
    arr2 = ['3','2','15','67','13','34','54','67','89']
    
    dictionary = {}
    
    index = 1
    for string in arr1:
        if(string == '*'):
            index = 2
            continue
        dictionary[string] = index
        
        
    S1 = -1
    S2 = -1
    for string in arr2:
        value = dictionary.get(string,-1)
        if(value == 1):
            S1 = string
        elif(S1 != -1 and value == 2):
            S2 = string
            break
            
    print(S1,S2)
    

    【讨论】:

    • Singh:如果它重复了怎么办?我应该举一个更好的例子
    • 然后制作两个不同的字典来存储 * 之后和之前的字典。
    猜你喜欢
    • 2015-04-06
    • 2021-12-26
    • 2018-01-07
    • 2015-09-29
    • 1970-01-01
    • 2011-03-16
    • 1970-01-01
    • 1970-01-01
    • 2015-09-02
    相关资源
    最近更新 更多