当前位置: 面试刷题>> 丢失的数 (经典算法题500道)


### 题目描述补充 **题目:丢失的数** 在一个长度为 `n` 的整数数组 `nums` 中,所有元素都在范围 `[0, n]` 内,但其中有一个数丢失了,即数组中缺失了一个数字。请编写一个函数来找到这个丢失的数字。 **要求**: - 函数的时间复杂度应为 O(n),其中 n 是数组的长度。 - 函数的空间复杂度应为 O(1)。 ### 示例 假设数组 `nums = [0, 1, 3]`,其长度为 3,且范围 `[0, 3]` 内,显然数字 2 丢失了。 ### PHP 示例代码 ```php function missingNumber($nums) { $n = count($nums); $expectedSum = $n * ($n + 1) / 2; // 预期总和(等差数列求和) $actualSum = array_sum($nums); // 实际总和 return $expectedSum - $actualSum; } // 测试 $nums = [0, 1, 3]; echo missingNumber($nums); // 输出 2 ``` ### Python 示例代码 ```python def missingNumber(nums): n = len(nums) expected_sum = n * (n + 1) // 2 # 预期总和(等差数列求和) actual_sum = sum(nums) # 实际总和 return expected_sum - actual_sum # 测试 nums = [0, 1, 3] print(missingNumber(nums)) # 输出 2 ``` ### JavaScript 示例代码 ```javascript function missingNumber(nums) { const n = nums.length; const expectedSum = n * (n + 1) / 2; // 预期总和(等差数列求和) const actualSum = nums.reduce((acc, val) => acc + val, 0); // 实际总和 return expectedSum - actualSum; } // 测试 const nums = [0, 1, 3]; console.log(missingNumber(nums)); // 输出 2 ``` **码小课提醒**:除了使用等差数列求和的方法外,还有其他方法可以解决这个问题,比如使用位运算或哈希表等。但考虑到题目对时间和空间复杂度的要求,上述方法是一个简单且高效的解决方案。在码小课网站上,你可以找到更多关于算法和数据结构的详细解析和练习题,帮助你提升编程能力。
推荐面试题