我可以检查子序列是否比 O(n*n) 更快

2024-04-14

所以我的问题是主题的名称。是否存在一种算法可以比 O(N^2) 更快地检查 B 是否是 A 的子序列,例如 O(NlogN) 或简单的 O(N)?

找到的唯一方法是简单的暴力

for(int i = 0; i < a.Length - b.Length; i++)
{
   if (IsSubsequence(a,b,i))
      return i;
}
return -1;

这是 David Eisenstat 算法的递归特征。 (注意这个算法是尾递归因此可以写成循环;我将其描述为递归,因为这样做是理解算法的好方法。)

将序列定义为空序列或后跟序列的项目。

取两个序列 A 和 B。问题是 B 是否是 A 的子序列。

如果 B 为空,则 B 是 A 的子序列。

如果 B 不为空且 A 为空,则 B 不是 A 的子序列。

如果我们已经走到这一步,A 和 B 都不是空的。假设 A 是项目 X 后跟序列 C,B 是项目 Y 后跟序列 D。

如果 X 与 Y 相同,那么问题的答案是“B 是 A 的子序列吗?”与较小问题“D 是 C 的子序列吗?”的答案相同。回答这个问题。

如果 X 与 Y 不同,那么问题的答案是“B 是 A 的子序列吗?”与较小问题“B 是 C 的子序列吗?”的答案相同。回答这个问题。

该过程终止,显然最坏的情况是序列 A 的长度。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我可以检查子序列是否比 O(n*n) 更快 的相关文章

  • Linux TUN/TAP:无法从 TAP 设备读回数据

    问题是关于如何正确配置想要使用 Tun Tap 模块的 Linux 主机 My Goal 利用现有的路由软件 以下为APP1和APP2 但拦截并修改其发送和接收的所有消息 由Mediator完成 我的场景 Ubuntu 10 04 Mach
  • ASP .NET MVC,创建类似路由配置的永久链接

    我需要帮助在 MVC 网站中创建类似 URL 路由的永久链接 Slug 已设置为 www xyz com profile slug 代码为 routes MapRoute name Profile url profile slug defa
  • 红宝石接球和效率

    catch在 Ruby 中意味着跳出深度嵌套的代码 在 Java 中 例如用Java也可以达到同样的效果try catch用于处理异常 但它被认为是糟糕的解决方案 而且效率非常低 在 Ruby 中 我们有处理异常的方法begin raise
  • TextBox 焦点的 WinForms 事件?

    我想添加一个偶数TextBox当它有焦点时 我知道我可以用一个简单的方法来做到这一点textbox1 Focus并检查布尔值 但我不想那样做 我想这样做 this tGID Focus new System EventHandler thi
  • 为什么 Web Worker 性能在 30 秒后急剧下降?

    我正在尝试提高在网络工作人员中执行时脚本的性能 它旨在解析浏览器中的大型文本文件而不会崩溃 一切都运行得很好 但我注意到使用网络工作者时大文件的性能存在严重差异 于是我做了一个简单的实验 我在同一输入上运行脚本两次 第一次运行在页面的主线程
  • 获取从属性构造函数内部应用到哪个属性的成员?

    我有一个自定义属性 在自定义属性的构造函数内 我想将属性的属性值设置为属性所应用到的属性的类型 是否有某种方式可以访问该属性所应用到的成员从我的属性类内部 可以从 NET 4 5 using CallerMemberName Somethi
  • 为什么密码错误会导致“填充无效且无法删除”?

    我需要一些简单的字符串加密 所以我编写了以下代码 有很多 灵感 来自here http www codeproject com KB security DotNetCrypto aspx create and initialize a cr
  • 如何用 kevent() 替换 select() 以获得更高的性能?

    来自Kqueue 维基百科页面 http en wikipedia org wiki Kqueue Kqueue 在内核和用户空间之间提供高效的输入和输出事件管道 因此 可以修改事件过滤器以及接收待处理事件 同时每次主事件循环迭代仅使用对
  • Xamarin Android:获取内存中的所有进程

    有没有办法读取所有进程 而不仅仅是正在运行的进程 如果我对 Android 的理解正确的话 一次只有一个进程在运行 其他所有进程都被冻结 后台进程被忽略 您可以使用以下代码片段获取当前正在运行的所有 Android 应用程序进程 Activ
  • 为什么 FTPWebRequest 或 WebRequest 通常不接受 /../ 路径?

    我正在尝试从 ftp Web 服务器自动执行一些上传 下载任务 当我通过客户端甚至通过 Firefox 连接到服务器时 为了访问我的目录 我必须指定如下路径 ftp ftpserver com AB00000 incoming files
  • 两组点之间的最佳匹配

    I ve got two lists of points let s call them L1 P1 x1 y1 Pn xn yn and L2 P 1 x 1 y 1 P n x n y n 我的任务是找到它们点之间的最佳匹配 以最小化它
  • 从 Orchard 内的主题渲染图像

    我刚刚选择 Orchard 来构建我的博客 作为创建这个新博客的努力的一部分 我正在创建一个自定义主题 这个自定义主题同时具有 CSS 和图像 我的问题 我的问题基本上可以归结为 如何渲染属于主题一部分的图像 到目前为止我已经尝试过的 我尝
  • Silverlight Datagrid:在对列进行排序时突出显示整个列

    我的 Silverlight 应用程序中有一个 DataGrid 我想在对该列进行排序时突出显示整个列 它在概念上与上一个问题类似 Silverlight DataGrid 突出显示整列 https stackoverflow com qu
  • 什么是大O表示法?你用它吗? [复制]

    这个问题在这里已经有答案了 什么是大O表示法 你用它吗 我想我错过了这门大学课程 D 有人使用过它并给出一些现实生活中使用它的例子吗 也可以看看 八岁孩子的大O https stackoverflow com questions 10716
  • 哪些属性有助于运行时 .Net 性能?

    我正在寻找可用于通过向加载器 JIT 编译器或 ngen 提供提示来确保 Net 应用程序获得最佳运行时性能的属性 例如我们有可调试属性 http msdn microsoft com en us library k2wxda47 aspx
  • Fluent NHibernate 日期时间 UTC

    我想创建一个流畅的 nhibernate 映射来通过以下方式映射 DateTime 字段 保存时 保存 UTC 值 读取时 调整为本地时区值 实现此映射的最佳方法是什么 就我个人而言 我会将日期存储在 UTC 格式的对象中 然后在读 写时在
  • 同时从多个流中捕获、最佳方法以及如何减少 CPU 使用率

    我目前正在编写一个应用程序 该应用程序将捕获大量 RTSP 流 在我的例子中为 12 个 并将其显示在 QT 小部件上 当我超过大约 6 7 个流时 问题就会出现 CPU 使用率激增并且出现明显的卡顿 我认为它不是 QT 绘制函数的原因是因
  • 如何在 GCC 5 中处理双 ABI?

    我尝试了解如何克服 GCC 5 中引入的双重 ABI 的问题 但是 我没能做到 这是一个重现错误的非常简单的示例 我使用的GCC版本是5 2 如您所见 我的主要函数 在 main cpp 文件中 非常简单 main cpp include
  • 为什么 Ajax.BeginForm 在 Chrome 中不起作用?

    我正在使用 c NET MVC2 并尝试创建一个 ajax 表单来调用删除数据库记录 RemoveRelation 的方法 删除记录的过程正在按预期进行 删除记录后 表单应调用一个 JavaScript 函数 从视觉效果中删除该记录 Rem
  • 如何使用 std::array 模拟 C 数组初始化“int arr[] = { e1, e2, e3, ... }”行为?

    注意 这个问题是关于不必指定元素数量并且仍然允许直接初始化嵌套类型 这个问题 https stackoverflow com questions 6111565 now that we have stdarray what uses are

随机推荐

  • 将 C dll 代码编组为 C#

    我在 dll 中有以下 C 代码签名 extern declspec dllexport unsigned char funct name int w int h char enc int len unsigned char text in
  • 当使用 apply() 和 call() 方法很容易继承时,为什么人们在 JavaScript 中使用原型?

    形状由矩形继承 这种继承可以通过多种方法来完成 这里我使用了apply 和call 当子类的draw方法被调用时 从该方法中再次调用基类的draw方法 我通过两种方式完成了这件事 一种是制作基类的原型绘制方法 另一种是使用 apply 和
  • Google 应用引擎 - 如何禁用缓存

    所以一些背景 我有一个在谷歌应用程序引擎上运行的nodeJS api 默认情况下 应用程序引擎会将我的所有获取请求缓存 10 分钟 我将 cloudflare 用于我的 API 因为这允许我在需要时从缓存中删除特定项目 您可以想象这会引起一
  • Swift iOS - 标签集合视图

    我正在编写我的第一个 iOS 应用程序 我只想回答最知名的解决方案是什么 这是简单的标签收集 我已经在互联网上查看过 但一无所获 我认为最好的方法可能是制作我自己的按钮结构 这是我想要实现的目标 有时你需要自己做 import UIKit
  • 在 Visual Studio Code 中自动导入以进行 React-Native 开发 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有扩展名吗VS Code这使得自动导入 for 反应本机组件 例如 当我打字时
  • 异步映射中的同步部分

    我有一个大的 IO 函数 它将持续从文件夹加载数据 对数据执行纯计算 然后写回 我正在多个文件夹上并行运行此函数 mapConcurrently iofun folderList from http hackage haskell org
  • 使用 AutoMapper 进行集合的多态映射

    TL DR 我在多态映射方面遇到了麻烦 我已经制作了一个 github 存储库 其中包含一个测试套件来说明我的问题 请在这里找到它 回购链接 https github com 780Farva AutoMapperInquiry 我正在努力
  • Neo4j 客户端使用“DateTime?”展开

    我目前正在尝试展开具有 日期时间 的 TravelEdges 列表 但我不断收到以下错误 CypherTypeException 类型不匹配 需要一个地图 但是字符串 2018 05 21T08 38 00 我目前正在使用最新版本的 neo
  • Azure SQL 数据库连接问题 - 连接太多?

    我有一个最近推出的白标网站 同一网站的多个版本 目前还没有大量流量 主要是机器人 但每天可能有 800 个用户 它托管在 Azure 上 具有 Azure 数据库以及位于非 Azure 服务器上的管理面板 两个站点都连接到同一 Azure
  • 使用git打开文件的命令

    我将 Sublime Text 作为 git 中的默认编辑器 并且它有效 git config edit在 Sublime Text 中打开配置文件 很棒 我的问题 打开命令是什么index html or style css从项目目录内部
  • 从多类分类算法输出前 2 个类

    我正在研究文本的多类分类问题 其中我有很多不同的类 15 我训练了一个 Linearsvc svm 方法 方法只是示例 但它只输出概率最高的单个类 有没有一种算法可以同时输出两个类 我正在使用的示例代码 from sklearn svm i
  • ValueError:Layerequential_20 需要 1 个输入,但它收到了 2 个输入张量

    我正在尝试使用 Tensorflow 中的 KMNIST 数据集和我正在使用的教科书中的一些示例代码构建一个简单的自动编码器 但当我尝试拟合模型时 我不断收到错误 错误说ValueError Layer sequential 20 expe
  • 迭代 std 容器中的所有元素对 (C++)

    迭代 std 容器中所有元素对的最佳方法是什么std list std set std vector etc 基本上与此等效 但使用迭代器 for int i 0 i lt A size 1 i for int j i 1 j lt A s
  • 当 Eclipse 插件使用 JNI 时,如何将 JNI 控制台输出重定向到 Eclipse 控制台视图?

    我有一个 Eclipse 插件 A 它依赖于另一个插件 B 插件 B 只是一个 jar 的包装器 其中包含本机 dll 并执行 jni 功能 鉴于此设置 我在 A 的 Activator 类的 start 方法中有以下代码 MessageC
  • keras 导入失败“没有名为 contrib.ctc 的模块”

    在 OSX El CApitan 10 11 6 上 我已经安装了 theano 和 TensorFlow 但从下面的跟踪中可以看出 keras 安装并不顺利 我看过这个报道关于 github 问题 https github com ten
  • 如何使 select2 只读?

    我知道 select2 不存在 只读 功能 请检查here https github com select2 select2 issues 3387 我该如何实现这一目标 任何帮助 将不胜感激 谢谢 注意 我不能使用禁用 如果我使用禁用 我
  • Angular Universal 仅显示首页的页面源

    我有一个在共享 Web 服务器上运行的 Angular Universal Web 应用程序 我使用 DirectAdmin 中名为 NodeJS Selector 的工具运行它 有了这个 我可以 npm install 和 server
  • 新的itunes连接崩溃日志

    如何在新的 itunes connect 中找到崩溃日志 苹果上的文档 参考了旧的itunes connect 但在新版本中找不到它 实际上他们已经将其集成到您的 XCode 管理器中 如果您在 XCode 中打开管理器 然后选择您的应用程
  • JQuery PrettyPhoto - 从非图像的链接打开图库

    我正在使用 JQuery PrettyPhoto 灯箱克隆 它工作得很好 但我有一个小问题 所有图像均具有以下格式 a href imageURL img src imageURL style height 100px title phot
  • 我可以检查子序列是否比 O(n*n) 更快

    所以我的问题是主题的名称 是否存在一种算法可以比 O N 2 更快地检查 B 是否是 A 的子序列 例如 O NlogN 或简单的 O N 找到的唯一方法是简单的暴力 for int i 0 i lt a Length b Length i