在子列表中查找两个匹配元素的分治算法

2024-09-25 12:36:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试实现下面的图片

enter image description here

这说明的逻辑如下:比较块的第一个实体和最后一个实体,如果它们不同,将其分为两个块。然后,比较分割块的第一个实体和最后一个实体。重复它,直到我们找到两个相同的实体

我刚开始编程,刚刚学习了递归逻辑、堆栈和队列。我试图用DFS实现它,但我不确定如何将它分成两部分并重复。你能帮我找到一个关键字谷歌吗?或者我可以使用任何匹配的数据结构吗

我写了这段代码,但似乎不起作用

def getBln(idx1, idx2):
  pass 

#DFS
def videoRcsv():
  if getBln(idx1, idx2) == True:
    break
  else:
    videoRcsv(idx1, idx2/2),videoRcsv(idx2/2, idx2)

def main():
  pass

main():

Tags: 实体队列堆栈maindef编程图片pass
2条回答

DFS在这里不相关,请使用递归实现图片。考虑最简单的情况(函数返回答案的条件-2个相等或不相等的实体),然后从该点继续

为什么不使用loop

    int l = 0; // first block
    
    int r = idx2; // index of last block
       
    while( l < r ){
          if( blocks[l++] == blocks[r ] ){
              // do smth
          }
    }

相关问题 更多 >