如何解决给定位置周围的常用值
想知道这个问题,但我不知道这是否有非蛮力的答案。 以下问题的最佳解决方案是什么? 考虑两个字符串数组,
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)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。