绝对元素和

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(使用前将#替换为@)

绝对元素和 的相关文章

  • 如何使用 Python 3 绕过 HTTP Error 403: Forbidden with urllib.request

    您好 不是每次都这样 但有时在尝试访问 LSE 代码时 我会收到每一个烦人的 HTTP 错误 403 禁止消息 任何人都知道我如何仅使用标准 python 模块来克服这个问题 遗憾的是没有漂亮的汤 import urllib request
  • 稀有对象的 python 类型注释,例如 psycopg2 对象

    我了解内置类型 但是我如何指定稀有对象 例如数据库连接对象 def get connection and cursor gt tuple psycopg2 extensions cursor psycopg2 extensions conn
  • 依次构建完整的 B 树

    如果我有一组排序的数据 我想以最适合顺序读取和随机查找的方式将其存储在磁盘上 那么 B 树 或其中一个变体 似乎是一个不错的选择 假设该数据集并不全部适合 RAM 问题是可以从一组排序的数据构建完整的 B 树而不进行任何页面拆分吗 这样排序
  • 反编译Python 3.9.2的PYC文件[重复]

    这个问题在这里已经有答案了 目前 我有一个 3 9 2 版本的 python 的 PYC 文件 P S 这适用于所有 3 9 及更高版本 我正在尝试反编译 PYC 文件 但它显示错误 因为 uncompyle6 或者更确切地说 新版本 de
  • 从 Azure ML 实验中访问 Azure Blob 存储

    Azure ML 实验提供了通过以下方式读取 CSV 文件并将其写入 Azure Blob 存储的方法 Reader and Writer模块 但是 我需要将 JSON 文件写入 blob 存储 由于没有模块可以执行此操作 因此我尝试在Ex
  • 无法在 selenium 和 requests 之间传递 cookie,以便使用后者进行抓取

    我用 python 结合 selenium 编写了一个脚本来登录网站 然后从driver to requests这样我就可以继续使用requests进行进一步的活动 I used item soup select one div class
  • 使用python从gst管道抓取帧到opencv

    我在用着OpenCV http opencv org 和GStreamer0 10 我使用此管道通过自定义套接字通过 UDP 接收 MPEG ts 数据包sockfd由 python 提供并显示它xvimagesink 而且效果很好 以下命
  • 在Python上获取字典的前x个元素

    我是Python的新手 所以我尝试用Python获取字典的前50个元素 我有一本字典 它按值降序排列 k 0 l 0 for k in len dict d l 1 if l lt 51 print dict 举个小例子 dict d m
  • Python HMAC:类型错误:字符映射必须返回整数、None 或 unicode

    我在使用 HMAC 时遇到了一个小问题 运行这段代码时 signature hmac new key secret key msg string to sign digestmod sha1 我收到一个奇怪的错误 File usr loca
  • 寻找局部最小值

    下面的代码正确地找到了数组的局部最大值 但未能找到局部最小值 我已经进行了网络搜索 以找到找到最小值的最佳方法 并且根据这些搜索 我认为我正在使用下面的正确方法 但是 在几天的时间里多次检查每一行之后 下面的代码中有一些我仍然没有看到的错误
  • python中basestring和types.StringType之间的区别?

    有什么区别 isinstance foo types StringType and isinstance foo basestring 对于Python2 basestring是两者的基类str and unicode while type
  • pandas 相当于 np.where

    np where具有向量化 if else 的语义 类似于 Apache Spark 的when otherwise数据帧方法 我知道我可以使用np where on pandas Series but pandas通常定义自己的 API
  • 如何查找或安装适用于 Python 的主题 tkinter ttk

    过去 3 个月我一直在制作一个机器人 仅用代码就可以完美运行 现在我的下一个目标是为它制作一个 GUI 但是我发现了一些障碍 主要的一个是能够看起来不像一个 30 年前的程序 我使用的是 Windows 7 我仅使用 Python 3 3
  • Airflow 1.9 - 无法将日志写入 s3

    我在 aws 的 kubernetes 中运行气流 1 9 我希望将日志发送到 s3 因为气流容器本身的寿命并不长 我已经阅读了描述该过程的各种线程和文档 但我仍然无法让它工作 首先是一个测试 向我证明 s3 配置和权限是有效的 这是在我们
  • 在Raspberry pi上升级skimage版本

    我已经使用 Raspberry Pi 2 上的 synaptic 包管理器安装了 python 包 然而 skimage 模块版本 0 6 是 synaptic 中最新的可用版本 有人可以指导我如何将其升级到0 11 因为旧版本中缺少某些功
  • 为什么 __dict__ 和 __weakref__ 类从未在 Python 中重新定义?

    类创建似乎从来没有re 定义 dict and weakref class属性 即 如果它们已经存在于超类的字典中 则它们不会添加到其子类的字典中 但始终re 定义 doc and module class属性 为什么 gt gt gt c
  • Python bug - 或者我的愚蠢 - 扫描字符串文字时 EOL

    我看不出以下两行之间有显着差异 然而第一个解析 而后者则不解析 In 5 n Axis of Awesome In 6 n Axis of Awesome File
  • minizinc python 安装

    我通过 anaconda 提示符在 python 上安装了 minizinc 就像其他软件包一样 pip install minizinc 该软件包表示已成功安装 我可以导入该模块 但是 我正在遵循基本示例https minizinc py
  • 如何给URL添加变量?

    我正在尝试从网站收集数据 我有一个 Excel 文件 其中包含该网站的所有不同扩展名 F i www example com example2 我有一个脚本可以成功从网站中提取 HTML 但现在我想为所有扩展自动执行此操作 然而 当我说 s
  • 带 Flask 的 RPI dht22:无法将第 4 行设置为输入 - 等待 PulseIn 消息超时

    我正在尝试制作一个 Raspberry Pi 3 REST API 使用 DHT22 提供温度和湿度 整个代码 from flask import Flask jsonify request from sds011 import SDS01

随机推荐

  • 为什么 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