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

给定一个数组,包含从 1 到 N 所有的整数,但其中缺了两个数字。你能在 O(N) 时间内只用 O(1) 的空间找到它们吗?

以任意顺序返回这两个数字均可。

示例 1:

输入:[1]
输出:[2,3]

示例 2:

输入:[2,3]
输出:[1,4]

提示:

  • nums.length <= 30000
通过次数
45.4K
提交次数
75.6K
通过率
60.1%


相关企业

提示 1
从第一部分开始:如果只缺少一个数字,那么找到它。

提示 2
第1部分:如果你必须在O(1)的空间复杂度和O(N)的时间复杂度下找到丢失的数字,那么只能在数组中执行常数次遍历,并且只能存储少许变量。

提示 3
第1部分:如果将数组中的所有值相加会怎么样?然后你能算出缺失的数字吗?

提示 4
第2部分:我们现在正在寻找两个缺失的数字,可以称其为a和b。第1部分中的计算方法将告诉我们a和b的和,但它实际上不会告诉我们a和b。还需要做什么计算?

提示 5
第2部分:有很多不同的计算方法可以试一试。例如,可以把所有的数都相乘,但这只会得到a和b的乘积。

提示 6
第2部分:把数字加在一起会得到a + b的结果。把数字相乘会得到a × b的结果。怎样才能得到a和b的确切值?

提示 7
第2部分:我们可以两者都计算。如果知道a + b = 87,a×b = 962,那么就解出a和b : a = 13且b = 74。但这也将导致必须对非常大的数相乘。所有数的乘积可以大于10^157。还有更简单的计算方法吗?

提示 8
第2部分:几乎任何我们能想到的“方程”都可以用在这里(只要它和线性和不等价)。只要保持这个和很小就可以。

提示 9
第2部分:试着求所有值的平方的和。

提示 10
第2部分:你可能需要二次公式。如果你不记得也没什么大不了的,大多数人都不会记得。知道二次公式的存在即可。

评论 (0)

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