O(N) 排列识别

2024-02-02

这个答案 https://stackoverflow.com/a/36818947/2642059通过比较两个字符串的内容来确定它们是否是排列。如果它们包含相同数量的每个字符,那么它们显然是排列。这是在O(N) time.

但我不喜欢这个答案,因为它重新发明了什么is_permutation http://en.cppreference.com/w/cpp/algorithm/is_permutation是设计来做的。也就是说,is_permutation其复杂度为:

At most O(N2) applications of the predicate, or exactly N if the sequences are already equal, where N=std::distance(first1, last1)

So I cannot advocate the use of is_permutation where it is orders of magnitude slower than a hand-spun algorithm. But surely the implementer of the standard would not miss such an obvious improvement? So why is is_permutation O(N2)?


is_permutation适用于几乎任何数据类型。您链接中的算法仅适用于具有少量值的数据类型。

这也是同样的原因std::sort是 O(N log N) 但计数排序是 O(N)。

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

O(N) 排列识别 的相关文章

随机推荐

  • “始终开启”jquery 命令

    最近我正在做一个项目 为一个商场制作一个交互式目录地图 而不使用Flash 因为他们需要从移动设备访问 但我对 jquery 有问题 我正在使用带有 jquery 地图突出显示的自定义 java 命令 我用它来定位我的地图坐标 当有人单击地
  • 带有多个表达式的 sed 与带有分号的一个表达式相同吗?

    我有一个非常大的文件 需要在其上运行多个 sed 命令 我想避免内存不足错误并节省时间 这些都是等价的吗 sed e expr1 e expr2 e expr3 file sed expr1 expr2 expr3 file sed exp
  • 使函数成为向量类型类的实例

    我有一个数学向量的自定义类型类 LANGUAGE MultiParamTypeClasses FlexibleInstances class Vector v a where infixl 6 lt gt lt gt v gt v gt v
  • 当“无法通过包 y 定位对象方法 x”时打印堆栈跟踪 (Perl)

    我有可能在错误类型的对象上调用方法 x 但它位于我的调用堆栈中 因此并不明显 那么 有没有办法在发生此错误时始终打印完整的堆栈跟踪 要始终打印完整的堆栈跟踪 请添加use Carp Always 或运行程序 perl MCarp Alway
  • 如何将HSL(色相、饱和度、亮度)转换为HSLum(色相、饱和度、亮度)和HSLum/RGB?

    我想将一些颜色值从众所周知的 HSL 转换为鲜为人知的 HSLum 该怎么做 hsl 0 1 0 0 5 rgb red is hslum 0 1 0 0 54 hsl 120 1 0 0 5 rgb green is hslum 0 1
  • 错误 CS0117(“调试”不包含“日志”的定义)

    当游戏对象与另一个游戏对象发生碰撞时 我试图在控制台上显示 我在 Unity 的控制台上不断收到此错误 ERROR CS0117 调试 不包含 日志 的定义 我在 mac 上使用 net core 我使用 vs 代码 1 35 1 和团结2
  • iPhone OS 当前使用情况统计信息(尤其是 2.x 与 3.x)

    我试图找出有多少活跃的 iPhone 和 iPod touch 用户至少安装了 3 0 操作系统 我需要知道运行 2 x 的百分比是否仍然相当大 我尝试查看 AdMob 统计数据和其他操作系统使用统计网站 但我看不到 iPhone 2 x
  • 在 FB 上实时启动应用程序时收到“此应用程序处于开发模式”

    我认为我一切都正确 但我的应用程序尚未上线 它说 这个应用程序处于开发模式 我猜这就是他们过去所说的沙盒模式 但我不知道在哪里将其从开发模式中取消 有人可以帮帮我吗 提前致谢 onkar 发布的解决方案对我不起作用 我认为自从 onkar
  • 在 D3 力布局链接中间显示箭头

    我正在使用 D3 绘制力导向图 这与此示例非常相似 http bl ocks org mbostock 1153292 http bl ocks org mbostock 1153292 我试图将箭头放在链接的中间而不是末端 玩attr r
  • Android Mediamuxer moovatom

    我正在使用录制设备屏幕Mediacodec and Mediamuxerapi 一切都很好 现在我想在录制时流式传输该文件 但直到muxer停止并且 moovatom 被写入文件末尾 所以我的问题是甚至可以使用Mediamuxer为目的 如
  • 为什么 malloc 中的内存不归零?

    我在书中读过 动态内存分配器维护进程的虚拟区域 内存称为堆 详细信息因系统而异 但是 不失一般性 我们将假设堆是一个区域 零需求内存在未初始化之后立即开始 bss 区域并向上增长 向更高的地址 所以 我很困惑为什么堆中的内存没有初始化为零
  • Excel VBA 使用 Workbook.Open 并显示 Dir(Directory) 的结果

    这看起来很简单 我已经让它工作了多次 但是在我的 Dir 调用 迭代目录 和打开当前文件之间 有些东西不断中断 这是相关代码 SourceLoc C ExcelWIP TestSource SourceCurrentFile Dir Sou
  • 面向对象的实现策略

    我目前正在 Squeak 环境中学习 Smalltalk 并且正在阅读 Squeak A Quick Trip To ObjectLand 我带着一些 Python 和 Java 的先验知识进入了面向对象范式 书中第 36 页的这句话让我想
  • 如何使用 FFMPEG 获取视频尺寸[重复]

    这个问题在这里已经有答案了 我的目标是将视频文件传递给 FFMPEG 并获取其尺寸作为输出 我怎样才能实现这一目标 谁能帮我提供示例代码吗 public void GetVideoInfo string input set up the p
  • 通知所有组成员 GitLab 中失败的管道

    目标是让每个人都能收到每个失败管道的通知 由他们自行决定 目前 我们任何人都可以在这个项目分支上运行管道 并且管道的创建者会收到一封电子邮件 而其他人则不会 我尝试将通知级别设置为watch and custom with failed p
  • Mockito - 如何模拟/验证接受新对象的方法调用?

    我有一个想要测试的方法 method1 它根据提供的参数创建一个对象并调用另一个方法 method2 所以我模拟 method2 它接受一个对象 sampleObj public void method1 booleanParam if b
  • 似乎“border-box”不适用于“a”标签的内联块

    我正在尝试整合box sizing但似乎不起作用 任何人都可以帮助我理解这里的问题 现场演示 https jsfiddle net 3gwebtrain b45qjhh5 a display inline block background
  • 如何在 Puppet 2.7 中将数组转换为逗号分隔的字符串

    我正在使用 Puppet 2 7 我需要将数组转换为逗号分隔列表 hosts fqdn host1 host2 host3 我需要将其转换为所需的结果 host1 host2 host3 我猜 Puppet 3 2 提供了 lambda 表
  • 在 VB.NET 中使用带有命名空间的 LINQ

    我有这个 XML 文件
  • O(N) 排列识别

    这个答案 https stackoverflow com a 36818947 2642059通过比较两个字符串的内容来确定它们是否是排列 如果它们包含相同数量的每个字符 那么它们显然是排列 这是在O N time 但我不喜欢这个答案 因为