hackerrank新年混沌代码优化

2023-12-20

我正在尝试优化我的解决方案Hackerranks 的“新年混乱”问题 https://www.hackerrank.com/challenges/new-year-chaos/problem。问题的要点是这样的

有一个由 n 个人组成的队列,标记为 1 到 n,每个人都可以贿赂直接在他们前面的人以交换位置并靠近队列的前面(在本例中为列表/数组的索引 0)。每个人最多只能贿赂两次(并且不能贿赂已经贿赂过自己的人)

在所有贿赂发生后,您会收到人民的命令,您的工作是确定发生了多少次贿赂才达到这一点。例如,如果给您 [3, 2, 1],那么答案将是 3 次贿赂(人员 3 贿赂人员 1, 2,人员 2 贿赂人员 1)。

我的解决方案是,对于每个 I 人,计算 I 左侧标签大于 I 的人数(他们必须贿赂 I 人才能到达他们的左侧)。让事情变得复杂一点(稍微),给出的一些测试用例只有在有人贿赂超过 2 次的情况下才可能出现(即 [4, 1, 2, 3] - 第 4 个人贿赂第 3 个人,然后是 2 个人,然后是 1 个人)前方)。如果是这种情况,只需输出“Too Chaotic”

无论如何,这是代码:

# n is the number of people in the list
# q is the order of the people after the bribery has taken place ex. [1, 3, 2, 5, 4]

for I in range(1, n + 1): # for each person I in the list
    index = q.index(I)
    if I - index > 3: # more than two bribes
        bribes = "Too chaotic"
        break
    for j in range(index): # for each number to the left of I, if greater than I, count it as a bribe
        if q[j] > I: 
            bribes = bribes + 1
print bribes

我的问题是,代码在一些较大的测试用例中超时(每个测试用例的运行时间只有这么多)。如何优化算法使其不会超时?我应该用另一种语言尝试这个问题吗?


对您的解决方案的一种优化是从 q[i] - 2 而不是 0 开始嵌套循环。由于没有人可以向前跳转到其原始位置超过 2,因此任何高于 q[i] 的值都只能是直到索引 q[i] -2。

就像是:

for(int j = Math.max(0, q[i] - 2); j < i; j++) {
    if(q[j] > q[i]) {
      bribe++;
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

hackerrank新年混沌代码优化 的相关文章

随机推荐

  • 错误:RPC 失败; curl 55 发送失败:连接被中止

    Enumerating objects 18 done Counting objects 100 18 18 done Delta compression using up to 4 threads Compressing objects
  • Android服务生命周期延续

    在主要活动中 我有广播接收器 待处理意图和警报管理器 它按照选定的时间触发 System currentTimeMillis smstimeinmilliseconds Intent intent new Intent this DBBro
  • 列表中成对的乘积之和

    这就是我遇到的问题 给定一个列表 xList 9 13 10 5 3 我想计算每个元素乘以后续元素的总和 sum 9 13 9 10 9 5 9 3 sum 13 10 13 5 13 3 sum 10 5 10 3 sum 5 3 在这种
  • 为Spring Kafka设置authorizationExceptionRetryInterval

    任何人都知道如何设置新属性 authorizationExceptionRetryInterval 而无需手动创建 ConcurrentKafkaListenerContainerFactory 我本来想说 Component class
  • 无法捕获的异常,第 2 部分

    Update 我已在 Microsoft Connect 上提交了错误报告 https connect microsoft com VisualStudio feedback details 568271 debugger halting
  • 在 XAML 中设置多个枚举标志

    有没有办法在 XAML 中设置多个枚举标志 传统上在代码隐藏中用 分隔 我尝试过类似的事情
  • 写入/读取 FIFO 文件 - linux

    我一直在尝试了解 FIFO 并提出了一个简单的服务器和客户端程序 我不想做任何花哨的事情 只是让一个进程扮演 服务器 的角色 这个进程将 监听 另一个进程传递的任何消息 客户端 这是我写的 server c include
  • 在“CaseDetailProps”类型上找不到带有“string”类型参数的索引签名

    例如 type CaseDetailProps id number apply degree string year number const caseData CaseDetailProps id 1 apply degree b yea
  • 使用 CALayers 的圆角 UIView - 只有一些角 - 如何?

    在我的应用程序中 有四个按钮 名称如下 左上方 左下方 右上 右下 按钮上方有一个图像视图 或 UIView 现在 假设用户点击左上角按钮 上面的图像 视图应在该特定角处进行圆角处理 我在将圆角应用于 UIView 时遇到一些困难 现在我正
  • 发布/订阅同一服务器集合的多个子集

    编辑 这个问题 一些答案和一些评论包含很多错误信息 看Meteor 收藏 出版物和订阅如何运作 https stackoverflow com a 21853298 1269037为了准确理解发布和订阅同一服务器集合的多个子集 如何将服务器
  • 如何将 ThreeJS Collada 加载器与 TypeScript / Angular CLI 结合使用?

    我已经安装了三个 node modules three 我已将 Collada 加载程序安装在 node modules three collada loader 这些类型似乎已经包括 Collada 加载程序的类型 node module
  • 获取由另一个函数调用的所有函数的列表

    在JavaScript中 是否可以获得由另一个函数调用的所有函数的列表 我想创建一个函数依赖关系树 以分析脚本中的函数如何相互关联 以及哪些函数需要哪些其他函数 例如 getAllCalledFunctions funcA this sho
  • 如何使带有自制库的 Xcode 项目可移植?

    我已经使用 Brew 在我的 mac 上安装了 FreeType 我的 mac 上的代码工作正常 但是当我尝试在其他 mac 上运行该项目时 我收到下面提到的链接错误 dyld Library not loaded usr local op
  • 在管道中的分类器之后使用指标

    我继续调查管道 我的目标是仅通过管道执行机器学习的每一步 将我的管道与其他用例相适应将会更加灵活和容易 所以我做什么 第 1 步 填充 NaN 值 第 2 步 将分类值转换为数字 第三步 分类器 第四步 网格搜索 第5步 添加指标 失败 这
  • 以编程方式将可拖动项移动到某个位置

    假设有一个只能在一个轴上拖动的可拖动对象 有没有办法以编程方式移动它 要么开始 要么增量 当然我可以去改变它的CSSleft属性 但这不会触发 jQuery 提供的拖动事件 我本来期待找到一个dragBy x y 可拖动的方法 这是示例 h
  • 有人可以解释一下这个 C++ 联合示例吗?

    我在 cppreference com 上找到了这段代码 这是我见过的最奇怪的 C 我有几个问题 union S std string str std vector
  • 选择合适的缓存机制

    我的设置 4 个网络服务器 静态内容服务器 NFS挂载 2 个数据库服务器 2 个 施展魔法 的服务器 另外 8 台指定为多用途机器 我正在为三种缓存机制编写一个包装器 以便可以以某种标准化的方式使用它们 文件系统 Memcached 和
  • 来自 STDIN 的 Python JSON 输入出现问题

    input json load sys stdin print input id 当我输入 id 1 并按 Enter 时 我的程序不会继续 我只是卡在输入中 在有效的 json 传递到我的 stdlin 后 如何使程序继续 当你读入时sy
  • 在 PL/SQL 中打印字母金字塔

    我有一个练习编写一个程序 打印出如下所示的字母金字塔 A ABA ABCBA ABCDCBA ABCDFDCBA 该任务还建议使用 INSTR LPAD UPPER 我想要一个包含字母表中所有字母的金字塔 然而 我发现先用数字来表示会更容易
  • hackerrank新年混沌代码优化

    我正在尝试优化我的解决方案Hackerranks 的 新年混乱 问题 https www hackerrank com challenges new year chaos problem 问题的要点是这样的 有一个由 n 个人组成的队列 标