绝对元素和

2023-12-24

我试图在 Hackerrank 上解决这个问题。https://www.hackerrank.com/challenges/playing-with-numbers/problem https://www.hackerrank.com/challenges/playing-with-numbers/problem

给定一个整数数组,您必须回答许多查询。每个查询由一个整数 x 组成,执行方式如下:

  • 将 x 添加到数组的每个元素,永久修改它以供将来的查询使用。
  • 求数组中每个元素的绝对值,并在新行上打印绝对值的总和。

有人可以向我解释这个解决方案吗?
我不太明白需要搜索-q在数组中n = bisect_left(arr, -q)和这条线(Sc[-1] - 2 * Sc[n] + q * (N - 2 * n).

from bisect import bisect_left
def playingWithNumbers(arr, queries):
    N = len(arr)
    res = []

    # Calculate cummulative sum of arr
    arr = sorted(arr)
    Sc = [0]
    for x in arr:
        Sc.append(x+Sc[-1])

    q = 0
    for x in queries:
        q += x
        n = bisect_left(arr, -q)
        res.append((Sc[-1] - 2 * Sc[n] + q * (N - 2 * n)))
    return res

谢谢


它实际上是排行榜的解决方案之一。我尝试运行这段代码,但没有完全理解他们为什么使用这些术语以及代码的想法

好吧,我现在明白了……这是一种“聪明”的计算方式。其实我在看任务的时候也想过这个想法,但是没有想到具体的细节。

想法是:当你添加x对于每个元素,该元素的绝对值最多改变x- 当您添加负数/从正数中减去时下降,当您添加正数/从负数中减去时上升。

拥有排序列表的累积和可以让您不必每次都遍历列表并进行相加和求和,而只需计算值。


让我们通过网站的示例输入来分析它:

3
-1 2 -3
3
1 -2 3 

我们的函数得到:arr = [-1, 2, -3]; queries = [1, -2, 3]

整理后进入arr = [-3, -1, 2](假设这些是a,b,c- 字母更能解释why这有效)我们得到了累计总和Sc = [0, -3, -4, -2] (0, a, a+b, a+b+c).

现在开始 smarty-pants 部分:

-q是我们价值观转变的地方arr- 也就是说,添加q会超过 0,使绝对值上升,而不是下降

我们来翻译一下这个res.append((Sc[-1] - 2 * Sc[n] + q * (N - 2 * n)))一对一:

  1. Sc[-1]是总和 (a+b+c)
  2. 让我们来q*N首先,这是相加时总和的变化q (all x到此为止的值)到每个元素
  3. 让我们来- 2 * Sc[n] and q * (-2*n)一起:-2 * (Sc[n] + q*n)- 这是我提到的周转点 - 如果我们有一个负数(我们查了-q,但我们添加q到它),neg - 2*abs(neg) = abs(neg), 我们用Sc and *n翻转所有负值。

该解决方案的复杂度是O(max(n,m)*logn)- 因为排序。累计总和是O(n),智能循环是O(m*logn)(二分法是O(logn),我在评论中忘记了)。

更改列表中的值的简单方法是O(n*m) - m经历过的时光n-长度列表。

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

绝对元素和 的相关文章

  • 编辑 scikit-learn 决策树

    我想编辑 sklearn DecisionTree 例如改变条件或切割节点 叶子等 但似乎没有功能可以做到这一点 如果我可以导出到文件 编辑它以导入 如何编辑决策树 环境 Windows 10 python3 3 sklearn 0 17
  • KFold 和 ShuffleSplit CV 有什么区别?

    看起来 KFold 每次迭代对象时都会生成相同的值 而 Shuffle Split 每次都会生成不同的索引 它是否正确 如果是这样 其中一个相对于另一个有什么用处 cv cross validation KFold 10 n folds 2
  • Python sqlite3游标没有属性commit

    当我运行这段代码时 path Scripts wallpapers single png conn sqlite3 connect Users Heaven Library Application Support Dock desktopp
  • Pyspark 数据框逐行空列列表

    我有一个 Spark 数据框 我想创建一个新列 其中包含每行中具有 null 的列名称 例如 原始数据框是 col 1 col 2 col 3 62 45 null 62 49 56 45 null null null null null
  • Django 的 URL 覆盖率测试为 0%,为什么?

    使用姜戈鼻子 我对 URL 进行了测试 但 URL 覆盖率仍然为 0 为什么 python manage py 测试配置文件 这是我的报道 Name Stmts Miss Cover Missing profiles 0 0 100 pro
  • 先增后减的最长子序列

    我正在尝试解决以下问题 元素值先减小后增大的序列称为V序列 在有效的 V 序列中 递减臂中应至少有一个元素 递增臂中至少应有一个元素 例如 5 3 1 9 17 23 是一个有效的 V 序列 在递减臂中具有两个元素 即 5 和 3 在递增臂
  • 如何使用 Pandas 将巨大的 CSV 转换为 SQLite?

    我有一个巨大的表 大约 60 GB 采用存档的 CSV 文件形式 我想将其转换为 SQLite 文件 我现在所做的事情如下 import pandas import sqlite3 cnx sqlite3 connect db sqlite
  • 如何使用 Python 多处理避免在分叉进程中加载​​父模块

    当您创建一个Pool使用Python的进程multiprocessing 这些进程将分叉 父进程中的全局变量将显示在子进程中 如下面的问题所述 如何限制多处理进程的范围 https stackoverflow com questions 2
  • 一行Python和SQLite代码,为什么需要加“,”? [复制]

    这个问题在这里已经有答案了 c execute INSERT INTO numbers VALUES random randint 0 100 如果我将上面的代码更改为 c execute INSERT INTO numbers VALUE
  • 如何对这个 Flask 应用程序进行单元测试?

    我有一个 Flask 应用程序 它使用 Flask Restless 来提供 API 我刚刚写了一些身份验证来检查 如果消费者主机被识别 该请求包含一个哈希值 通过加密 POST 的请求内容和 GET 的 URL 以及秘密 API 密钥来计
  • Matplotlib 图例不工作

    自从升级 matplotlib 以来 每当尝试创建图例时 我都会收到以下错误 usr lib pymodules python2 7 matplotlib legend py 610 UserWarning Legend does not
  • 如何检查列表是否为空?

    这个问题的答案是社区努力 help privileges edit community wiki 编辑现有答案以改进这篇文章 目前不接受新的答案或互动 例如 如果通过以下内容 a 我如何检查是否a是空的 if not a print Lis
  • 求解不等式系统时“多项式错误:仅允许使用单变量多项式”

    我想找到以下两个常数的区间cons1 and cons2我写了下面的代码 from sympy import Poly from sympy import Abs from sympy solvers inequalities import
  • Spark中的count和collect函数抛出IllegalArgumentException

    当我使用时抛出此异常时 我尝试在本地 Spark 上加载一个小数据集count 在 PySpark 中 take 似乎有效 我试图搜索这个问题 但没有找到原因 看来RDD的分区有问题 有任何想法吗 先感谢您 sc stop sc Spark
  • smooth_idf 是多余的吗?

    The scikit learn 文档 http scikit learn org stable modules generated sklearn feature extraction text TfidfTransformer html
  • numpy.cov() 返回意外的输出

    我有一个 X 数据集 有 9 个特征和 683 行 683x9 我想获取这个 X 数据集和另一个与 X 具有相同形状的数据集的协方差矩阵 我使用np cov originalData generatedData rowvar False 代
  • Spyder 如何在同一线程的后台运行 asyncio 事件循环(或者确实如此?)

    我已经研究 asyncio 模块 功能几天了 因为我想将它用于我的应用程序的 IO 绑定部分 并且我认为我现在对它的工作原理有一个合理的理解 或者在至少我认为我已经理解了以下内容 任一时刻 任一线程中只能运行一个异步事件循环 一旦一切都设置
  • 如何使用Featuretools按列值从单个数据框中的多个列创建特征?

    我正在尝试根据之前的结果来预测足球比赛的结果 我在 Windows 上运行 Python 3 6 并使用 Featuretools 0 4 1 假设我有以下代表结果历史记录的数据框 原始数据框 https i stack imgur com
  • 在Python中从日期时间中减去秒

    我有一个 int 变量 它实际上是秒 让我们调用这个秒数X 我需要得到当前日期和时间 以日期时间格式 减去的结果X秒 Example If X是 65 当前日期是2014 06 03 15 45 00 那么我需要得到结果2014 06 03
  • 在游戏中实现功能

    我在完成这部分作业时遇到了麻烦 我必须宣布游戏的获胜者 然后输入到函数中 输入所有 if 语句后 我必须创建一个函数def playGame 这必须包括 showRules user getUserChoice computer getCo

随机推荐

  • 为什么 Linux 不遵循 Unix 系统调用约定?

    我正在自学 Linux 汇编语言 并且发现了 BSD 和 Linux 之间的一个有趣的区别 在 Unix 中 在调用 80h 中断之前将系统调用参数压入堆栈 相比之下 在 Linux 中 您在寄存器中传递参数 有谁知道 Linux 开发人员
  • 使用 R 将底图添加到 SpatialPointDataFrames

    我想向我的绘图添加底图 该底图可视化三个 SpatialPointDataFrame 我已经尝试过 maptools 和 RgoogleMaps 包 但两者都无法按我想要的方式工作 我的问题 SpatialPointsDataFrame 未
  • get请求中的参数可以有多长?

    我目前正在编写一个 API 通过获取参数获取传递的数据 因此我想知道 URL 或参数值的总长度是否在最佳实践或协议中受到限制 基本上 2K 是跨浏览器方式中最值得信赖的分辨率 但如果放弃对 IE 8 及更低版本的支持 您可能会喜欢 64K
  • IllegalArgumentException:pointerIndex 超出 SwipeRefreshLayout 的范围

    我已经得到了其中一些IllegalArgumentException pointerIndex out of range在 crashlytics 上崩溃 我不明白发生了什么 它不限于一种 Android 版本或设备 它发生在 5 0 1
  • ASP.NET MVC 将视图渲染为用于电子邮件发送的字符串

    我想使用 MVC 视图创建电子邮件正文 我遇到过这个 http www brightmix com blog renderpartial to string in asp net mvc http www brightmix com blo
  • Groovy 的“它”是什么?

    我有一个正在处理的集合removeIf 在 Groovy 中 在街区内 我可以访问一些it标识符 这是什么 它记录在哪里 it是闭包中提供的隐式变量 当闭包没有显式声明的参数时它可用 当闭包与集合方法一起使用时 例如removeIf it将
  • 为当前目录提供服务的简单文件服务器[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个非常简单的垃圾箱 我可以在 shell 中启动它并让它为当前目录提供服务 最好不是 也许还有一个 p用于指定端口 由于它应该
  • AWK -- 如何进行选择性多列排序?

    在 awk 中 我该怎么做 Input 1 a f 1 12 v 2 b g 2 10 w 3 c h 3 19 x 4 d i 4 15 y 5 e j 5 11 z 所需的输出 通过对数值进行排序 5 1 a f 2 10 w 2 b
  • 如何从 Snomed Postgres Sql 数据库查找关系

    问题陈述 从 Snomed CT 数据库中提取所有父母 祖父母 子女和孙子女 描述 我正在尝试在本地机器上设置 snomed 数据库来提取特定概念的关系 所有父母和孩子 使用 Concept id 我已经从以下位置下载了 snomed 数据
  • 扁平化复杂的 json 对象以进行 mvc 绑定

    我的控制器以 json 格式将对象图返回到视图 如下所示 return Json customer 在视图上我的 json 对象看起来像这样 Name Joe Budget Amount 500 Spend 100 它正确映射到我的客户对象
  • MVC kendo 窗口 - 从 JavaScript 函数获取数据

    我的应用程序中有这个剑道窗口 Html Kendo Window Name copyStructure Title Copy Structure Content Loading LoadContentFrom CopyStructure N
  • 如何对解决方案中的所有文件禁用#nullable

    我想将我的代码库迁移到可为空的引用 之一迁移策略 https learn microsoft com en us dotnet csharp nullable migration strategies包括添加 nullable disabl
  • 为什么Rails 的composite_primary_keys gem 不起作用?

    我已按照说明进行操作here http roninonrails blogspot com 2008 04 gotcha compositeprimarykeys gem html 通过安装composite primary keys ge
  • 比较 Hibernate 中日期时间字段的时间部分

    我有一个使用 hibernate annotations mysql 组合进行 ORM 的应用程序 在该应用程序中 我得到了一个带有日期字段的实体 我正在寻找一种在时间范围内选择该日期的方法 所以hh mm ss没有日期部分 MySQL中有
  • Symfony:服务...依赖于不存在的参数 kernel.secret

    我正在尝试设置一个新的 Symfony 项目 当我执行 php console php config dump reference 时 出现错误 提示 服务 uri signer 依赖于不存在的参数 kernel secret 您的意思是
  • 解析SQL查询并提取列名和表名

    我有一个这样的查询脚本 SELECT View1 OrderDate View1 Email SUM View1 TotalPayments FROM dbo View1 WHERE View1 OrderStatus Completed
  • 如何在Mono中嵌入flash?

    是否可以在单声道应用程序中嵌入闪存 最好类似于它可以作为 ActiveX 控件嵌入到 Net 中的方式 但是任何 Flash 命令可以以某种方式冒泡到 Mono 应用程序的方式都可以 我原以为可以使用网页浏览器查看flash 但是我无法确定
  • 显示下拉列表时微调器的状态是什么?

    我正在创建一个带有自定义视图的微调器 无论如何 我设法在微调器处于非活动状态以及按下时显示不同的可绘制对象 我希望在下拉列表显示时保持按下状态可绘制 这是 mi XML 文件
  • 虚拟析构函数和未定义的行为

    这个问题不同于 我何时 为何应该使用virtual析构函数 struct B virtual void foo B lt not virtual struct D B virtual void foo D B p new D delete
  • 绝对元素和

    我试图在 Hackerrank 上解决这个问题 https www hackerrank com challenges playing with numbers problem https www hackerrank com challe