确定两个列表是否包含相同的数字项而不进行排序

2024-04-02

我有两个列表,我需要确定它们是否包含相同的值而不进行排序(即值的顺序无关)。我知道排序会起作用,但这是性能关键部分的一部分。

项目值落在 [-2, 63] 范围内,我们总是比较相同大小的列表,但列表大小范围为 [1, 8]。

示例列表:

A = (0,   0, 4, 23, 10)
B = (23, 10, 0,  4,  0)
C = (0,   0, 4, 27, 10)

A == B is true
A == C is false

我认为一个可能的解决方案是比较两个列表的乘积(将所有值相乘),但是这个解决方案存在问题。如何处理零和负数。解决方法是在相乘之前将每个值加 4。这是我到目前为止的代码。

bool equal(int A[], int B[], int size)
{
    int sumA = 1;
    int sumB = 1;

    for (int i = 0; i < size; i++) {
        sumA *= A[i] + 4;
        sumB *= B[i] + 4;
    }
    return (sumA == sumB)
}

但是,无论列表的顺序/内容是什么,这总是有效吗?换句话说,以下内容在数学上正确吗?所以我真正要问的是以下内容(除非有另一种方法来解决问题):

给定 2 个大小相等的列表。如果列表的乘积(将所有值相乘)相等,则列表包含相同的值,只要这些值是大于 0 的整数。


假设您提前知道范围,则可以使用计数排序的变体。只需扫描每个数组并跟踪每个整数出现的次数即可。

Procedure Compare-Lists(A, B, min, max)
  domain := max - min
  Count := new int[domain]
  for i in A:
    Count[i - min] += 1
  for i in B:
    Count[i - min] -= 1
    if Count[i - min] < 0:
      // Something was in B but not A
      return "Different"
  for i in A:
    if Count[i - min] > 0:
      // Something was in A but not B
      return "Different"
  return "Same"

这是线性的O(len(A) + len(B))

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

确定两个列表是否包含相同的数字项而不进行排序 的相关文章

  • 如何改变HTML5视频的播放速度?

    如何更改 HTML5 中的视频播放速度 我查过视频标签的属性 https www w3schools com html html5 video asp在 w3school 但无法做到这一点 根据这个网站 http www chipwreck
  • IronPython 中批量求值表达式的性能

    在 C 4 0 应用程序中 我有一个具有相同长度的强类型 IList 的字典 一个基于动态强类型列的表 我希望用户根据将在所有行上聚合的可用列提供一个或多个 python 表达式 在静态上下文中它将是 IDictionary
  • 具有独特矩阵转置问题的 2D 分块

    我有类型的复杂值数据struct complex double real 0 0 double imag 0 0 以 3 阶张量的形式组织 底层容器具有与内存页边界对齐的连续内存布局 The natural slicing directio
  • SSL 速度:128 位与 256 位

    我决定使用 SSL 加密我的整个网站 即使实际上只有部分网站是必要的 最终结果是该网站现在有点慢 所以 我的问题是 我是否应该只加密网站的会员部分 请记住我在首页上有登录表单 我是否应该将加密降低到 128 位 如果站点总体较小 速度差异是
  • 针对 Android 开发优化 Eclipse

    我使用 Eclipse 和 ADT 插件开发 Android 而且速度 很慢 我必须经常重新启动 当我打开各种 Android 项目 当我使用库项目时需要 时 情况会变得更糟 使用 ADT 插件时 是否可以进行任何具体优化来提高 Eclip
  • 为什么乘法比除法便宜?

    我最近编写了一个 Vector 3 类 并将我的 normalize 函数提交给朋友审阅 他说这很好 但我应该尽可能乘以倒数 因为在 CPU 时间上 乘法比除法便宜 我的问题很简单 这是为什么 从硬件可以更轻松地实现的基本运算的角度来考虑
  • 快速检查网络速度

    我想从我的 swift 应用程序检查网络速度 我发现很多帖子描述了Reachability特别是查找连接是否可达以及是 WIFI 连接还是 WWAN 连接的方法 我的问题 是否可以检测 WWAN 的类型 2G 3G 4G 你可以用以下命令检
  • SQL Azure 和 READ_COMMITTED_SNAPSHOT

    我想在 SQL Azure 数据库上将 READ COMMITTED SNAPSHOT 设置为 ON 但 Azure 不支持以下适用于其他版本的 SQL Server 的代码 ALTER DATABASE database name SET
  • 为什么反射会减慢Android手机的速度

    我多次读到反射会降低手机性能 这有多真实 例如 在我的例子中 我从 Web 服务获取一些参数 这些参数与我在 Android 应用程序中的类的参数同名 所以我只是使用java字段和反射设置这些参数的值 它似乎并没有降低性能 有人可以向我解释
  • JTable 不断调用自定义单元格渲染器方法...

    编译源可以在以下位置找到 http www splashcd com jtable tar http www splashcd com jtable tar 我是这门语言的新手 所以我不确定这是否可以接受 我创建了一个 JTable 来为收
  • Blob 的簇生长

    考虑以下来自 Mathworks 的图像 我已经用标签标记了斑点 L num bwlabel I 如何迭代连接所有斑点 即从一个斑点开始 找到离它最近的一个 考虑最左边的两个斑点 可以从一个斑点的许多点绘制许多条线来连接到另一个斑点blob
  • 在哪里可以找到Python内置序列类型的时间和空间复杂度

    我一直无法找到此信息的来源 无法亲自查看 Python 源代码来确定这些对象是如何工作的 有谁知道我可以在网上找到这个吗 结帐时间复杂度 http wiki python org moin TimeComplexitypy dot org
  • 为什么将 std::endl 与 ostringstream 一起使用会影响输出速度?

    我正在计算将文本打印到标准输出的各种方法之间的差异 我正在测试cout printf and ostringstream两者同时使用 n and std endl 我期望std endl有所作为cout 确实如此 但我没想到它会减慢输出速度
  • 需要更快的数组复制

    经过一些阅读后 我发现在 java 中复制数组的方式存在一些差异 对于我的应用程序 我有一个递归节点树 每个节点都包含一个 2d 板数组 8x8 通过探查器测试 我能想到的最好的办法是 java util Arrays copyOf arr
  • 如何证明2条sql语句是等价的

    我开始用连接和子语句重写一个复杂的 SQL 语句 并获得一个看起来更简单的语句 我通过在相同的数据集上运行并获得相同的结果集来测试它 一般来说 我如何 概念上 证明这两个陈述在任何给定数据集中都是相同的 我建议学习关系代数 正如 Mchl
  • Fortran的性能

    Fortran 的表现计算机语言基准游戏 http shootout alioth debian org 出奇的糟糕 今天的结果显示 Fortran 在两项四核测试中分别排名第 14 和第 11 在单核测试中排名第 7 和第 10 现在 我
  • Android 7 GraphicBuffer 替代方案,用于直接访问 OpenGL 纹理内存

    从移动设备具有 CPU 和 GPU 共享内存这一事实中获利的唯一方法是使用GrphicBuffer 但由于 Android 7 限制对私有本机库 包括 gralloc 的访问 因此无法再使用它 问题 是否有其他方法可以直接内存访问纹理的像素
  • 为什么PostgresQL查询性能随着时间的推移而下降,但重建索引时又恢复了

    根据这个page http www postgresql org docs current static indexes examine html在手册中 indexes don t need to be maintained 然而 我们运
  • 通过左连接实现精确分页

    我已经思考这个问题有一段时间了 我认为最好四处询问并听听其他人的想法 我正在构建一个在 Mysql 上存储位置的系统 每个位置都有一个类型 有些位置有多个地址 表格看起来像这样 location location id autoincrem
  • MySQL 性能 DELETE 或 UPDATE?

    我有一个超过 10 7 行的 MyISAM 表 向其中添加数据时 我必须在最后更新 10 行 删除它们然后插入新行更快 还是更新这些行更快 应更新的数据不是索引的一部分 索引 数据碎片怎么样 UPDATE到目前为止要快得多 当你UPDATE

随机推荐

  • Axios 未传递 Content-Type 标头

    我在后端运行一个 Odoo 实例 并创建了一个公开 Web 控制器的自定义模块 如下所示 网页控制器 coding utf 8 from odoo import http import odoo from odoo http import
  • Linux/Unix 中是否有与 futex 等效的东西?

    我正在寻找可以用来做的东西polling like select kqueue epoll即不忙轮询 在 C C 中 换句话说 我需要阻塞一个线程 然后在另一个线程中唤醒它尽可能少的开销 A mutex condition variable
  • iOS Playground 中的 NSUserDefaults

    iOS Playgrounds 似乎有一个奇怪的问题NSUserDefaults总是返回nil而不是实际值 在 iOS Playground 中 最后一行错误地返回nil import UIKit let defaults NSUserDe
  • 如何升级现有的 Flutter 应用?

    我有一个半年前构建的现有 Flutter 应用程序 我查了一下pubspec lock 它有这一行 sdks dart gt 2 10 0 110 lt 2 11 0 flutter gt 1 16 0 lt 2 0 0 所以我假设该应用程
  • sql server中事务回滚的机制是什么?

    sql server中事务回滚的机制是什么 数据库中的每个更新都会首先将一个条目写入包含更改描述的日志中 例如 如果您将列值从 A 更新到 B 日志将包含更新记录 类似于 在表 T 中 列 C 已从 A 更改为 B 以通过 id I 的事务
  • 获取ArrayList中重复项的数量

    例如 假设我有一个ArrayList可能包含以下值 x x x y y 现在我想要检索的是x and x我希望能够区分我所拥有的x or y因为实际上 我可以在 ArrayList 中拥有任何对象 并且我必须能够区分它们 我想做的是首先转换
  • 操作 struct tm 中的 tm_mon?

    我无法理解这个程序 即tm mon 1 part 我是 C 语言新手 通常我总是编写自己的小程序来应对我在遵循的课程书中设置的任何挑战 但我不得不咨询其他人来解决这个问题 它是课本和他们的代码 所以不是我的 我不明白为什么 1被添加到tm
  • node.js/MySQL:当我尝试插入数据库时​​,某些字符串编码(表情符号)抛出错误

    我正在运行一个 node js 脚本 该脚本从公共 数据库 它是一个 区块链 中提取数据 然后对其执行一些操作 然后将其插入到 MySQL 数据库中 我已经使用 MySQL 数据库UTF8 general ci编码 绝大多数数据都可以很好地
  • 对于每个循环:仅删除第一个附件

    在使用 for 每个循环复制附件后 我一直尝试删除 Outlook 中的附件 它只是在复制后删除第一个附件 但不会处理第二个附件 它只是下降到 End Sub Private Sub Items ItemAdd ByVal item As
  • 如何在 Laravel Vapor 应用程序中获取 HTTP 请求的 IP?

    我最近将 Laravel 应用程序从服务器移至 Vapor 此应用程序依赖于使用日志记录请求IP地址Request ip 但自从切换到 Vapor 后 所有 IP 都记录为 127 0 0 1 我查看了可信代理文档https laravel
  • 在 Observable 中 xhr.send() 之后获取服务器响应

    我实现了一种在 Angular 2 应用程序中发布文件的方法 它基于我找到的解决方案here https stackoverflow com a 35985489 2018084 由于 Angular 2 本身不支持文件上传 因此解决方案必
  • R 创建滑动窗口时间段内先前事件的统计

    任何人都可以帮助我解决使用 R 创建特定时间段内先前事件总和的问题吗 如果我不遵守协议 我深表歉意 这是我的第一个问题 我有一系列 ID 和活动日期 在真正的 df 中 事件是日期时间 但为了让事情更简单 我在这里使用了日期 我正在尝试创建
  • 谷歌图表增加y轴宽度增加

    如何增加 Google 图表 y 轴宽度 请找到图片 左侧全文未正确显示 请指导我 如何增加谷歌图表y轴宽度 https i stack imgur com jl1L2 jpg 需要调整图表和chartArea中的大小options 要为左
  • Visual Studio 2008 解决方案中的最佳项目数是多少?

    Visual Studio 2008 解决方案中的最佳项目数是多少 我们有一个 Visual Studio 2008 解决方案 目前约有 50 个项目 随着解决方案中的大部分项目由主应用程序的插件程序集组成 它可能会继续增长 如果一个解决方
  • JSON 数字正则表达式

    我正在尝试为 JSON 中的数字字符串编写正则表达式 我对编写正则表达式还是新手 我找到了 JSON 数字机器的图表 here http www json org 但我不知道如何攻击它 以下是正则表达式应找到的一些字符串 22 55 754
  • 已知为 iOS5 和 Storyboard 更新 MGSplitViewController 的努力?

    我正在开发一个 iPad 应用程序 需要隐藏 显示分割视图的主控制器 相关 SO 答案注释 Matt Gemmell 的MGSplitViewController https github com mattgemmell MGSplitVi
  • 即时视频结果

    我正在查询亚马逊的产品广告 API 以获取即时视频 流媒体 结果 一切工作正常 除了缺少一些信息 描述不包含在结果中 例如 在亚马逊上website电影 食品公司 http www amazon com Food Inc dp B002VR
  • 如何用 Perl 编写 HTTP 服务器?

    Perl 标准库 CPAN 或其他地方是否有 Web 服务器或 HTTP 服务器模块 我想我正在寻找Python 3的等价物http server模块 谢谢 此外HTTP 守护进程 http search cpan org perldoc
  • React Native 在多个并发 Android 模拟器上运行

    我想同时在至少 2 个 Android 模拟器上测试我的应用程序 我可以启动 2 个模拟器 但似乎找不到如何启动react native run android我的应用程序在 2 个带有 ADB 的模拟器上运行 如果可能的话我也希望能够运行
  • 确定两个列表是否包含相同的数字项而不进行排序

    我有两个列表 我需要确定它们是否包含相同的值而不进行排序 即值的顺序无关 我知道排序会起作用 但这是性能关键部分的一部分 项目值落在 2 63 范围内 我们总是比较相同大小的列表 但列表大小范围为 1 8 示例列表 A 0 0 4 23 1