/*为了获得线性时间的解法,直观的想法是Hash Table,然而Hash Table
会引入O(n)的空间复杂度。因此可以试着用输入的数组直接作为Hash Table,
用nums[i]存储大小为i的数,第一个nums[i] != i时,找到答案为i。
*/
class Solution {
public:
int missingNumber(vector<int>& nums) {
for(int i = 0; i < nums.size(); ){
if(nums[i] == i) ++i;
else{
if(nums[i] < nums.size()) swap(nums[i], nums[nums[i]]);
else ++i;
}
}
for(int i = 0; i < nums.size(); ++i){
if(nums[i] != i) return i;
}
return nums.size();
}
};LeetCode之Missing Number
寻找缺失的数字:一种高效的时间复杂度解决方案
最新推荐文章于 2019-07-26 16:47:26 发布
本文提供了一种使用数组自身作为哈希表来解决寻找缺失数字问题的方法,通过迭代数组并利用其元素值进行交换,实现线性时间复杂度且空间效率优化。详细介绍了算法实现步骤及其实现代码。
108

被折叠的 条评论
为什么被折叠?



