leetcode在力扣 App 中打开
调试中...
调试中...
题目描述
题目描述
题解
题解
提交记录
提交记录
代码
代码
测试用例
测试用例
测试结果
测试结果
中等
相关标签
相关企业
提示

给定两个整数数组,请交换一对数值(每个数组中取一个数值),使得两个数组所有元素的和相等。

返回一个数组,第一个元素是第一个数组中要交换的元素,第二个元素是第二个数组中要交换的元素。若有多个答案,返回任意一个均可。若无满足条件的数值,返回空数组。

示例 1:

输入:array1 = [4, 1, 2, 1, 1, 2], array2 = [3, 6, 3, 3]
输出:[1, 3]

示例 2:

输入:array1 = [1, 2, 3], array2 = [4, 5, 6]
输出:[]

提示:

  • 1 <= array1.length, array2.length <= 100000
通过次数
19.4K
提交次数
40.2K
通过率
48.3%


相关企业

提示 1
在这里用一些例子做些数学计算。这一对数值有什么需求?你发现它们的值有什么特点?

提示 2
当你把一个值a从数组A移动到数组B时,A的和减少了a, B的和增加了a。当你交换两个值时会发生什么?交换两个值并得到相同的和需要什么?

提示 3
如果你交换两个值,即a和b,那么A的和变成sumA - a + b,而B的和变成sumB - b + a。这两个和需要相等。

提示 4
你在寻找a和b的值,其中sumA - a + b = sumB - b + a。用数学方法算出这对a和b的值意味着什么。

提示 5
如果计算一下,那我们要找一对这样的值,即a - b = (sumA - sumB) / 2。然后,问题归结为寻找具有特定差的一对值。

提示 6
一种蛮力解法是遍历所有的数值对,以找到一个具有正确差值的数值对。这可能看起来为:对A进行外循环,对B进行内循环。对于每个值,计算差值并与目标差值进行比较。能说得更具体些吗?给定A中的值和目标差,可以知道要找的B中的元素的确切值吗?

提示 7
蛮力解法其实是在B中寻找一个等于a - target的值。你如何能更快地找到这个元素?什么方法可以帮助我们快速找到数组中是否存在某个元素?

提示 8
可以用散列表,也可以尝试排序。两者都能帮助我们更快地定位元素。

提示 9
如果A的和是11,B的和是8呢?能有一对数刚好有目标差吗?检查你的解决方案是否恰当地处理了这种情况。

评论 (0)

《程序员面试金典(第 6 版)》独家授权
本书是原谷歌资深面试官的经验之作,帮助了许多想要加入脸书、苹果、谷歌等 IT 名企的求职者拿到 Dream offer。本专题的 100+ 编程面试题是在原书基础上精心挑选出来的,帮助你轻松应战 IT 名企技术面试。
© 2025 领扣网络(上海)有限公司
0 人在线
行 1,列 1
array1 =
[4, 1, 2, 1, 1, 2]
array2 =
[3, 6, 3, 3]
Source