红心火柴 2022-03-09 11:10 采纳率: 100%
浏览 95
已结题

求一个数组的最长重复子数组

使用python,如何实现以下问题
给定一个数组,求该数组中最长重复子数组(每个子数组间不重叠),输出第一个子数组的起始下标与长度、并将该数组输出,要求程序的时间复杂度小于等于O(nlogn)
程序示例
示例1
输入:[1,2,3,4,5,7,2,3,4,5]
输出:
起始下标:1
长度:4
重复子数组:[2,3,4,5]

示例2
输入:[0,1,1,1,1]
输出:
起始下标:1
长度:2
重复子数组:[1,1]

  • 写回答

4条回答 默认 最新

  • 关注

    最长重复子数组长度肯定小于等于len/2,暴力循环求解

    n=eval(input())
    def search(n):
        for i in range(int(len(n) / 2), 0, -1):
            for j in range(int(len(n) / 2)):
                for h in range(j + i, len(n) - i + 1):
                    if n[j:j + i] == n[h:h + i]:
                        print('起始下标:',j)
                        print('长度:',i)
                        print('重复子数组:',n[j:j + i])
                        return
    search(n)
    

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(3条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 3月16日
  • 已采纳回答 3月16日
  • 修改了问题 3月9日
  • 创建了问题 3月9日

悬赏问题

  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 stm32开发clion时遇到的编译问题
  • ¥15 lna设计 源简并电感型共源放大器