M 位置循环移位 N 大小数组的最快算法

2023-11-21

M 个位置的循环移位数组最快的算法是什么?
例如,[3 4 5 2 3 1 4]移位 M = 2 个位置应该是[1 4 3 4 5 2 3].

多谢。


如果您想要 O(n) 时间并且不需要额外的内存使用(因为指定了数组),请使用 Jon Bentley 的书“Programming Pearls 2nd Edition”中的算法。它将所有元素交换两次。不如使用链表快,但使用更少的内存并且概念上简单。

shiftArray( theArray, M ):
    size = len( theArray )
    assert( size > M )
    reverseArray( theArray, 0, size - 1 )
    reverseArray( theArray, 0, M - 1 )
    reverseArray( theArray, M, size - 1 )

reverseArray( anArray, startIndex, endIndex ) 将元素的顺序从 startIndex 反转到 endIndex(包括两端)。

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

M 位置循环移位 N 大小数组的最快算法 的相关文章

随机推荐

  • 一个完整的c#操作系统

    我看到了这个话题here 我想知道这是否合法 听起来像 以及这样做的缺点是什么 在某些架构中独立运行它需要什么 谢谢 尝试用托管语言创建操作系统目前是一个 有趣的研究问题 这意味着这似乎是可能的 但仍有相当多的重要问题需要解决 例如 我不希
  • ASP.NET 身份和移动客户端

    最新版本的 ASP NET 包括新的身份验证框架 ASP NET Identity 它应该是所有新的和近期的 ASP NET 项目和网站中用户管理的核心构建块 我已经看到它可以很好地与 WebAPI 集成 但还没有看到任何集成为移动客户端设
  • 数据湖和大数据是一样的吗?

    我试图了解数据湖和大数据之间是否存在真正的区别 如果你检查一下这两个概念 它们就像一个大存储库 它保存信息直到有必要为止 所以 我们什么时候可以说我们正在使用大数据还是数据湖 我不能说我以前遇到过 大存储库 这个术语 但要回答最初的问题 不
  • 如何让 fancyBox 2 调整其高度以适应其内容?

    我正在努力让我的fancyBox当其内容高于视口时扩展高度 这样 用户就可以使用浏览器的滚动条滚动其内容 相反 我的 fancyBox 不断获得自己的滚动条 我只是使用内联内容 而不是iframe 这些是我设置的选项 fancybox fa
  • 如何可靠地去除破坏代码的不可见字符?

    我正在尝试构建一个小书签 并被这个我刚刚弄清楚的问题所困扰 u8203字符 Chrome 在我的代码块 粘贴到 JS 控制台后 无助地告诉我是一个 无效字符非法 幸运的是 Safari 告诉我这是一个 u8203 我正在 Sublime T
  • NSSortDescriptor - 基于另一个数组对描述符进行排序

    我有一个核心数据应用程序 我想获取一种对象 User User拥有财产userId 我有另一个数组userIds 1 4 3 5 我想创建一个NSSortDescriptor这对我的User基于对象的顺序userIds 在数组中 这可能吗
  • powershell v2 - 如何获取进程ID

    我有一个应用程序 它运行自身的多个实例 例如 AppName exe instance1 AppName exe instance2 AppName exe instance3 我正在尝试使用 Powershell v2 创建一个简单的脚本
  • 如何偏移多边形边?

    I have a list of point2D that makes a closed polygon Now I want to create another set of 2D points by offsetting the pol
  • EntityType“ApplicantPosition”没有定义键

    运行我的第一个 asp net mvc 应用程序时出现此错误 我认为实体框架会自动创建以 Id 结尾的列名的键 这不是正确的吗 正如您所看到的 ApplicantPositionID 将是一个包含 2 列作为主键的表 因为它与申请人和职位相
  • 如何将字符串分配给可变静态变量?

    我想为全局变量赋值 但它一直出现编译器错误 static mut NameArr static str 20 0 20 fn main unsafe static mut S1 String to string S1 push 0 Name
  • EF Core 3.1 是否支持数据库优先方法?

    我们正在移植一个ASP NET MVC 4 x申请到ASP NET Core 3 1 当前应用程序正在使用EF 6 xDB优先方法 作为此迁移的一部分 我们将使用EF Core 3 1作为当前的替代方案EF 6 x 所以问题是 EF Cor
  • 安全地覆盖 RAM 中的 Python 变量? [复制]

    这个问题在这里已经有答案了 我正在用 Python 编写一个程序 其中涉及对密码进行哈希处理 假设我用它来获取密码 import getpass password getpass getpass Password 然后对其进行哈希处理 有没
  • WS_EX_APPWINDOW 是做什么的?

    这要么只是一个已弃用的窗口样式 没有文档 要么是我在搜索它时犯了一个缺陷 我的问题是 这个标志有什么作用 是否有我可能需要的支持的等效项 非常感谢您的建议 WS EX APPWINDOW是一种扩展窗口样式 记录在MSDN 它绝对不会被弃用
  • Connector/C++ MySQL 错误代码:2014,SQLState: HY000 和命令不同步错误为什么?

    您好 我使用 Connector C 并执行简单的 2 个 sql 命令 如下所示 第一个 select sql 运行正常 但第二个会导致此异常错误 ERR 命令不同步 你现在不能运行这个命令 MySQL 错误代码 2014 SQLStat
  • firebase .on("value") 和 .once("value") 之间的区别

    在更新子 Firebase 时 使用时会再运行一次 once 从 firebase 获取值并在应用程序中添加新行 但使用时 on 该代码适用于更新子项 但不适用于添加新子项 因为它从应用程序中删除了该行 尽管它添加到了 firebase 但
  • 是否可以获得“setter”的 setter 函数的引用?

    例如 在这段代码中 var o set a value this b value get a return this b 是否可以获取对该 setter 函数的引用o a这样如果引用被分配给f那么我可以做f call other value
  • 为什么Javascript函数“arguments”不是node.js中Array的实例?

    最近看了很多 NodeJS 和 Javascript 代码 似乎arguments 不是 Array 的实例 但仍然表现得像一个实例 所以人们做了类似的事情Array prototype slice call arguments or sl
  • 为什么 Opera 中的文本以更大的字体大小呈现?

    我正在开发一个需要或多或少像素完美的 HTML 页面 我注意到在 Opera 10 中 字体渲染得比在其他浏览器中更大 尽管字体大小实际上是相同的 请在 Opera 10 和其他浏览器 如 Firefox 3 6 中查看此示例页面 http
  • 沿 MKPolyLineView ( MKPolylineRenderer ) 的渐变

    我想根据速度等某些条件在折线视图上应用渐变 我能够子类化MKPolyLineRenderer使用自定义描边和填充进行绘制 但只能沿路径使用相同的颜色 我看到其他类似的问题 例如 从圆形或甜甜圈中绘制线段 or 在 OSX 上 如何渐变填充路
  • M 位置循环移位 N 大小数组的最快算法

    M 个位置的循环移位数组最快的算法是什么 例如 3 4 5 2 3 1 4 移位 M 2 个位置应该是 1 4 3 4 5 2 3 多谢 如果您想要 O n 时间并且不需要额外的内存使用 因为指定了数组 请使用 Jon Bentley 的书