给定位置周围的常用值

问题描述

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

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

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

解决方法

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

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

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

时间复杂度: O(n)

空间复杂度: O(n)

arr1 = ['2','3','156','15','*','11','13','34','65','78']
arr2 = ['3','2','67','54','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)