给定一个数组 nums,包含从 1 到 N 的所有整数但缺失两个数字(数组长度为 N-2)。要求 O(N) 时间、O(1) 额外空间,找出缺失的两个数字,并说明思路。
Given an array nums containing integers from 1 to N with exactly two numbers missing (len = N-2). Find the two missing numbers in O(N) time and O(1) extra space, and explain your approach.
题目类型: 技术面试题
这是一道技术面试题,常见于澳洲IT公司面试中。
难度: medium
分类: Algorithms
标签: missing two numbers, O(1) space, O(N) time
参考答案摘要
答案 关键是先确定 N:通常 N = len(nums) + 2。目标是在不使用额外哈希表的前提下恢复两个缺失值。 常见有三类做法:数学(和与平方和)、原地哈希(把值放回“该在的位置”)、位运算(整体异或后按最低不同位分组)。 三种方法都能做到 O(N) 时间;数学与位运算天然 O(1) 空间,原地哈希也可做到 O(1) 额外空间。
本题提供 STAR 原则详细解答和技术解析,登录匠人学院学习中心即可查看完整答案。