面试题:三个数组,O(N*N)

2024-06-18

假设我们有three长度数组N其中包含任意数量的类型long。然后我们得到一个数字M(相同类型)我们的任务是选择三个数字A, B and C每个数组中的一个(换句话说A should从第一个数组中选取,B从第二个开始和C从第三个)所以总和A + B + C = M.

Question: could we pick all three numbers and end up with time complexity of O(N2)?


插图:

数组是:

1) 6 5 8 3 9 2
2) 1 9 0 4 6 4
3) 7 8 1 5 4 3

And M我们得到的是19。 那么我们的选择就是8从一开始,4从第二个和7从第三。


This can be done in O(1) space and O(N2) time.

首先让我们解决一个更简单的问题:
给定两个数组A and B从每个元素中选取一个元素,使它们的总和等于给定的数字K.

对两个数组进行排序需要 O(NlogN)。
求指点i and j以便i指向数组的开头A and j指向末尾B.
求总和A[i] + B[j]并将其与K

  • if A[i] + B[j] == K我们发现 这对A[i] and B[j]
  • if A[i] + B[j] < K, 我们需要 增加总和,因此增加i.
  • if A[i] + B[j] > K, 我们需要 减少总和,因此递减j.

排序后找到该对的过程需要 O(N)。

现在我们来看看原来的问题。我们有第三个数组,现在称之为C.

所以现在的算法是:

foreach element x in C
  find a pair A[i], B[j] from A and B such that A[i] + B[j] = K - x
end for

The outer loop runs N times and for each run we do a O(N) operation making the entire algorithm O(N2).

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

面试题:三个数组,O(N*N) 的相关文章

  • 如何在 JavaScript 中检查字符串是否包含子字符串数组中的文本?

    非常简单 在 javascript 中 我需要检查字符串是否包含数组中保存的任何子字符串 没有任何内置功能可以为您执行此操作 您必须为其编写一个函数 尽管它可能只是对some数组方法 两种方法适合您 Array some method 正则
  • Lamport 的 Paxos 中的矛盾做了简单的论文

    阶段 2 a 如果提议者收到大多数接受者对其准备请求 编号为 n 的响应 则它向每个接受者发送一个接受请求 以获取编号为 n 且值为 v 的提案 其中 v 是响应中编号最高的提案的值 或者如果响应未报告任何提案 则为任意值 正如论文中提到的
  • 解决复发问题

    我被给予F 0 X and F i A F i 1 2 B F i 1 C 1000000 for 1 i N 现在给出N A B C and X 如何找到所有N元素有效吗 我需要将这 N 个元素分成 2 个集合 其中最大的元素在第一个集合
  • 在 Java 中调整数组大小同时保留当前元素?

    我已经在Java中搜索了调整数组大小的方法 但找不到调整数组大小的方法同时保留当前元素 我发现例如这样的代码int newImage new int newWidth 但这会删除之前存储的元素 我的代码基本上会这样做 每当添加新元素时 数组
  • 在php中遍历数组[重复]

    这个问题在这里已经有答案了 可能的重复 循环数组的数组 https stackoverflow com questions 8055123 loop an array of array 所以我知道如何遍历偶数 key gt value 关联
  • 在编译时初始化静态数组时,g++ (4.7.2) 错误或功能?

    好吧 所以我试图通过初始化一堆来做一些聪明的事情constexpr static int const编译时的数组 尽管运行时性能根本不受初始化这些数组的控制 但这似乎是一个有趣的小练习 我写了一个测试设置来看看是否可行 最终我能够做到这一点
  • 数组名或函数名何时“转换”为指针? (在C中)

    1 误解 每当用 C 语言声明一个数组时 都会有一个指向该数组第一个元素的指针created 数组的名称 隐式 是吗 我不这么认为 前两行this http ee hawaii edu tep EE160 Book chap7 subsec
  • 计算排列中“反转”的数量

    设 A 为一个大小的数组N 我们称之为几个索引 i j 一个 逆 如果i lt j and A i gt A j 我需要找到一种接收大小数组的算法N 具有唯一的数字 并返回时间的倒数数O n log n 您可以使用归并排序 http en
  • 匈牙利算法 - 系统分配

    我正在一个项目中实现匈牙利算法 我设法让它工作 直到所谓的步骤 4维基百科 http en wikipedia org wiki Hungarian algorithm Matrix 5Finterpretation 我确实设法让计算机创建
  • 如果我在计算强连通分量时不使用 G 转置会怎样?

    我正在阅读算法导论 在 22 5 强连通分量中 算法 STRONGLY CONNECTED COMPONENT G 定义为 调用 DFS G 计算每个顶点 u 的完成时间 u f 计算 G 转置 调用 DFS G transpose 但在
  • StartCoroutine 被调用多次 (C# Unity)

    我正在 Unity 中创建一个弹出菜单选项 现在我的问题是我在 void update 中创建的协程被调用了很多次 我的意思是在我的 Unity 控制台上 Debug Logs 正在递增 它不应该正确 因为它已经是协程了 有人可以帮助我了解
  • 在Numpy数组中如何找到一个值的所有坐标

    如果我想找到所有 3D 数组中最大值的坐标 如何找到它们 到目前为止 这是我的代码 但它不起作用 我不明白为什么 s set elements np isnan table numbers table elements biggest fl
  • 如何在 Swift 中按换行符分割字符串

    我有一个从文本文件中获得的字符串 文本文件 Line 1 Line 2 Line 3 我想将其转换为数组 每行一个数组元素 Line 1 Line 2 Line 3 根据文件的保存方式 字符串可能采用以下形式之一 string Line 1
  • Ruby 中的数组切片:不合逻辑行为的解释(取自 Rubykoans.com)

    我正在做练习鲁比 科恩斯 http rubykoans com 我对以下 Ruby 怪癖感到震惊 我发现它确实无法解释 array peanut butter and jelly array 0 gt peanut OK array 0 1
  • 计算序列 1,3,8,22,60,164,448,1224... 的第 n 项? [复制]

    这个问题在这里已经有答案了 可能的重复 我想以 Order 1 或 nlogn 的顺序生成序列 1 3 8 22 60 164 的第 n 项 https stackoverflow com questions 11301992 i want
  • JavaScript 中多个数组的笛卡尔积

    如何在 JavaScript 中实现多个数组的笛卡尔积 举个例子 cartesian 1 2 10 20 100 200 300 应该返回 1 10 100 1 10 200 1 10 300 2 10 100 2 10 200 2020
  • 将堆分配的指针转换为指向 VLA 的指针是否安全?

    如果我有一个指向代表典型的堆分配空间的指针 行主二维数组 将此指针强制转换为 指向 VLA 的等效指针以方便下标 例子 Assuming m was allocated and initialized something like int
  • PHP 难以检查数组中的元素是否为整数类型

    我正在尝试检测一个或多个变量是否包含数字 我尝试了几种不同的方法 但并没有完全成功 这是我尝试过的
  • 根据 cron 规范计算下一个计划时间

    在给定当前时间和 cron 规范的情况下 计算事件下一次运行时间的有效方法是什么 我正在寻找 每分钟循环检查是否符合规范 以外的东西 规格示例可能是 每月1日 15日15 01 每小时整点的 10 20 30 40 50 分钟 Python
  • 如何使用存储过程 SQL SERVER 2008 R2(mssql) 插入 PHP 数组值

    我有这个数组 REV Array 0 gt 240 1 gt 241 2 gt 242 3 gt 243 4 gt 249 我现在使用下面的代码进行插入 将每个数组的元素存储在带有 id userID Type 和 Date 的行中 if

随机推荐

  • 了解SD卡路径Android的最佳方法

    我需要知道大多数设备中的 SD 卡路径 我实际使用时遇到一些问题 Environment getExternalStorageDirectory 但有些手机无法返回正确的路径 我不知道为什么 检查不同设备和操作系统版本的 SD 卡路径的最佳
  • 为什么有时 npm install 在 mac 上不起作用?

    我在运行命令时创建了nodejs项目npm 安装它因一些错误而失败 同一个项目正在进行中ubuntu系统但是当我克隆这个代码时mac系统并尝试运行 npm install 它失败并出现一些错误 我认为 scrypt 模块有问题 但我不知道确
  • 退出时的 Powerpoint 问题

    我有一些 C 代码 可以打开 Powerpoint 幻灯片 刷新图表 然后退出 这工作正常 除非用户已经打开了 Powerpoint 幻灯片 在这种情况下 一旦 exe 运行 它将关闭他们现有的会话 丢失他们可能所做的任何更改 所以 问题是
  • finish() 和 System.exit(0) 之间的区别

    我说的是android中的编程 早期我以为 finish 关闭当前活动并返回到 Activity 堆栈中的上一个 并且System exit 0 关闭整个应用程序 但是我错了 我做了一个小实验并了解到两者都只会完成当前的 Activity
  • 为什么静态向下转型 unique_ptr 不安全?

    我指的是一个后续问题 向下转型 unique ptr 到 unique ptr https stackoverflow com questions 21174593 downcasting unique ptrbase to unique
  • Matlab dec2bin 给出错误的值

    我正在使用 Matlab 的 dec2bin 将十进制数转换为二进制字符串 但是 我得到了错误的结果 例如 gt gt dec2bin 13339262925365424727 ans 101110010001111010010100111
  • 在 C++ 中检查文件是否存在的最佳方法是什么? (跨平台)

    我已阅读以下答案检查 C 中文件是否存在的最佳方法是什么 跨平台 https stackoverflow com questions 230062 whats the best way to check if a file exists i
  • JavaScript 中的巨大字符串替换?

    我有一个小型 JavaScript 应用程序 可以解析用户放入浏览器中的文件 最近我发现一些非英语字符的问题 此处放置的文件类型使用 Windows 1252 字符集 因此诸如 实际上是通过 我必须将它们全部转换为正确的字符 例如 我得到S
  • 为什么全局变量“名称”更改为字符串? [复制]

    这个问题在这里已经有答案了 当我将数组对象命名为 name 时 类型自动更改为 String 而不是 Array 为什么
  • 颤动:所选值不显示在下拉列表中

    我正在从 SQLite 数据库填充城市名称并尝试显示为下拉列表 我通过遵循教程使其工作 但遇到了一个小问题 所选值不会显示在下拉列表中 它继续显示默认提示值 但是 我能够分配和检索正确的选定值 这是我的代码 cities dart clas
  • 如何延迟 onClick 操作

    我正在尝试在 java 应用程序 android 中做一些事情 并且我需要一些东西来延迟 等待循环的秒数 我怎样才能延迟android功能 我尝试过使用 Thread sleep TimeUnit sleep 但它只会执行几秒钟的不负责任的
  • 将 Visual Studio 在线 Git 存储库集成到 Android Studio 1.0.2

    我正在使用 Visual Studio Online 进行开发过程 我想将我的 Android Studio 1 0 2 代码集成到其中 但是 据我所知 Android Studio 没有 TFS 插件 这就是为什么我想使用 Git 进行源
  • 常见的 Windows 编译器上有哪些 std::locale 名称可用?

    该标准对于什么构成有效的语言环境名称几乎没有提及 只有传递无效的区域设置名称才会导致std runtime error 哪些语言环境名称可用于常见的 Windows 编译器 例如 MSVC MinGW 和 ICC 好吧 C 和 C 语言环境
  • java.lang.RuntimeException:将结果 ResultInfo{who=null, request=1888, result=0, data=null} 传递给活动失败

    我的应用程序允许用户按下按钮 打开相机 他们可以拍照 照片会显示在ImageView 如果用户在相机打开时按后退或取消 我会强制关闭 无法将结果 ResultInfo who null request 1888 result 0 data
  • scipy.interpolate.griddata:剪切 z 值并获取其中的区域

    Regarding to this analogy to scipy interpolate griddata https stackoverflow com questions 18496783 analogy to scipy inte
  • 使用“Openxml writer”合并 Excel 中的单元格

    我想合并单元格是excel 通过使用 DOM 方法 我可以轻松做到这一点 但由于我的 Excel 文件太大 当我尝试获取工作表时 它会抛出内存不足异常 所以我必须使用SAX方法来读取excel文件 但我不知道如何用这种方法合并单元格 查了很
  • 删除字符串中的转义符,或者“我怎样才能让 \ 不碍事?”

    转义字符在 R 中会带来很多麻烦 前面的问题证明了这一点 更改列中的值 https stackoverflow com questions 10046357 change the values in a column 10046412 10
  • 给图像着色[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我正在尝试着色System Windows Controls Image 该图像包含透明区域 我只是想用颜色给非透明区域着色 例如 图
  • 自定义 zsh 在显示上一个命令退出代码时的提示

    Zsh 能够通过使用以下命令在提示中显示上一个命令的返回代码 退出代码 转义序列 不过我想得到以下提示 user host 当退出代码不为 0 且 user host 当退出代码为 0 时 如果我使用 单独它总是显示 即使 是 0 另外我想
  • 面试题:三个数组,O(N*N)

    假设我们有three长度数组N其中包含任意数量的类型long 然后我们得到一个数字M 相同类型 我们的任务是选择三个数字A B and C每个数组中的一个 换句话说A should从第一个数组中选取 B从第二个开始和C从第三个 所以总和A