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

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

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

  • 包含跨语言基准的资源?

    有哪些资源可以使用基准来比较编程语言 我对两者都感兴趣 给定语言的程序执行给定基准测试的速度有多快 给定语言需要多少行代码才能实现给定基准 有一个历史悠久的网站 https benchmarksgame team pages debian
  • php 排序比 mysql“order by”更好吗?

    我想知道 就性能而言 并考虑在具有非常非常多 gt 1 000 000 记录的表上进行mysql选择 使用sql order by 对结果进行排序或在查询后使用经典编程排序对结果进行排序是否更好算法 有人有什么建议吗 Tanks mySQL
  • 应该尝试...catch进入循环内部还是外部?

    我有一个看起来像这样的循环 for int i 0 i lt max i String myString float myNum Float parseFloat myString myFloats i myNum 这是一个方法的主要内容
  • Chrome 开发者工具中的空闲时间和其他时间。为什么浏览器长时间不活动?

    Chrome 开发者工具的 时间线摘要 选项卡中的 空闲 和 其他 时间包含哪些内容 是什么导致如此不作为 为什么会出现这些情况呢 如何减少这些时间呢 是否可以 为什么浏览器长时间处于不活动状态 在空闲时间的情况下 开始时超过 1 8 秒没
  • 使用 chrome 和 selenium 进行网络节流

    谷歌Chrome 38推出新功能 设备模式和移动仿真 https developer chrome com devtools docs device mode开发工具中的功能 除了选择仿真设备外 还可以模拟不同的网络条件 https dev
  • 为什么数据结构对齐对性能很重要?

    有人能给我一个简短而合理的解释 解释为什么编译器向数据结构添加填充以对齐其成员吗 我知道这样做是为了CPU可以更有效地访问数据 但我不明白为什么会这样 如果这仅与 CPU 相关 为什么在 Linux 中双 4 字节对齐 在 Windows
  • android中如何释放内存避免内存泄漏

    While going through the android developer site i found this 它说为了避免内存泄漏 我们应该在 onStop 中释放资源 但如何做到这一点 基本上 任何被正确清空的对象都被视为已释放
  • 真实文件对象比 StringIO 和 cStringIO 慢?

    StringIO其代码中有以下注释 Notes Using a real file is often faster but less convenient There s also a much faster implementation
  • Scala 性能问题

    In the 丹尼尔 科泽夸 Daniel Korzekwa 撰写的文章 http blog danmachine com 2011 01 moving from java to scala one year html 他说以下代码的性能
  • 加快 pandas groupby 中的滚动总和计算

    我想按组计算大量组的滚动总和 但我很难快速地完成它 Pandas 内置了滚动和展开计算器的方法 这是一个例子 import pandas as pd import numpy as np obs per g 20 g 10000 obs g
  • 有什么办法可以让这个 C# 代码更快吗? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我正在读取一个大文件 X12 并解析其中的信息 我有两个瓶颈功能 我似乎无法解决 read line 和 get element 有什
  • 改进绩效反思 - 我应该考虑哪些替代方案?

    我需要动态地设置对象上的一堆或属性的值 将其称为传输对象 将在短时间内创建相当数量的此类传输对象并设置其属性 我想避免使用反射 还有其他选择吗 如果是的话 有我可以查看的示例实现吗 Use Delegate CreateDelegate h
  • 有效地从 2 个数据帧中查找日期时间范围的重叠

    关于查找日期或时间范围的重叠存在一些问题 例如 https stackoverflow com questions 9044084 efficient date range overlap calculation in python 我用这
  • 如何加快编辑距离计算速度

    我正在尝试运行模拟来测试平均值编辑距离 http en wikipedia org wiki Levenshtein distance之间随机 二进制字符串 我的程序是用 python 编写的 但我正在使用这个C扩展 https githu
  • 空 while 循环有什么影响?

    我知道这可能是一个有点 愚蠢 的问题 但有时 我只想循环直到条件为假 但我不喜欢让循环保持为空 所以代替 Visible true while IsRunning Visible false 我通常prefer while IsRunnin
  • 如何找到 IIS 在负载/性能测试期间模拟的平均并发用户数?

    我正在使用 JMeter 进行负载测试 我正在练习通过简单地增加我的分布式 JMeter 测试用例中的线程数并启动测试来查找我们的网络服务器可以处理的最大并发线程 用户 数量 然后 我突然意识到 虽然 MAX 数字可能有用 但REAL我的网
  • 如何有效地从 DB2 表中删除所有行

    我有一个大约有 50 万行的表 我想删除所有行 如果我做简单的delete from tbl 事务日志已满 我不关心这种情况下的事务 无论如何我都不想回滚 我可以删除许多事务中的行 但是有更好的方法吗 如何有效地从 DB2 中的表中删除所有
  • 只读有运行时开销吗?

    出于某种原因 我一直认为readonly字段有与其相关的开销 我认为这是 CLR 跟踪是否存在readonly字段是否已初始化 这里的开销是一些额外的内存使用量 用于跟踪状态以及分配值时的检查 也许我这么认为是因为我不知道readonly字
  • 这个 cProfile 结果告诉我需要修复什么?

    我想提高Python脚本的性能并且一直在使用cProfile生成性能报告 python m cProfile o chrX prof bgchr py args 我打开这个chrX prof使用 Python 的文件pstats并打印出统计
  • 有谁知道一种更快的方法来执行 String.Split() 吗?

    我正在读取 CSV 文件的每一行 并且需要获取每一列中的各个值 所以现在我只是使用 values line Split delimiter where line是保存由分隔符分隔的值的字符串 衡量我的表现ReadNextRow我注意到它花费

随机推荐

  • 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