You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

LeetCode 268. Missing Number代码超时原因咨询

LeetCode 268. Missing Number 超时问题分析

题目描述

给定一个包含n个不同数字的数组nums,数字范围为[0, n],返回该范围内缺失的唯一数字。

示例1

  • 输入: nums = [3,0,1]
  • 输出: 2
  • 解释: n = 3(数组有3个元素),数字范围为[0,3],2是范围内未出现在nums中的缺失数字。

示例2

  • 输入: nums = [0,1]
  • 输出: 2
  • 解释: n = 2(数组有2个元素),数字范围为[0,2],2是范围内未出现在nums中的缺失数字。

约束条件

  • n == nums.length
  • 1 <= n <= 10^4
  • 数组nums中的所有数字都是唯一的。

你的代码

class Solution {
public:
    int Missing_Number(vector<int>& num) {
        int ans = 0;
        for(int i=0 ; i <= nums.size() ; i++){
            bool flag = true;
            for(int j=0 ;j<=nums.size() -1 ; j++){
                if(i == nums[j]){
                    flag = false;
                }
                else{
                    continue;
                }
            }
            if(flag == true){
                ans = i;
            }
        }
        return ans;
    }
};

超时原因

你的代码用了双重嵌套循环,时间复杂度为O(n²)。当n达到104时,总运算次数会达到108级别,这远超LeetCode的时间限制(通常题目允许的运算次数在106~107之间),因此触发了超时错误。

另外注意:函数参数是vector<int>& num,但循环里用的是nums.size(),变量名不一致,虽然测试用例通过了,但这是个笔误,建议修正。

优化方案

方案1:求和法

计算0到n的总和,减去数组元素的总和,差值就是缺失的数字。时间复杂度O(n),空间复杂度O(1):

class Solution {
public:
    int missingNumber(vector<int>& nums) {
        int n = nums.size();
        int total = n * (n + 1) / 2;
        int sum = 0;
        for (int num : nums) {
            sum += num;
        }
        return total - sum;
    }
};

方案2:异或法

利用异或性质:a^a=0、0^a=a。将0到n的所有数与数组元素逐一异或,最终结果就是缺失数字。时间复杂度O(n),空间复杂度O(1):

class Solution {
public:
    int missingNumber(vector<int>& nums) {
        int n = nums.size();
        int res = n;
        for (int i = 0; i < n; ++i) {
            res ^= i ^ nums[i];
        }
        return res;
    }
};

方案3:排序法

先排序数组,遍历检查元素是否等于索引,找不到则返回n。时间复杂度O(n log n),空间复杂度O(1)(允许修改原数组):

class Solution {
public:
    int missingNumber(vector<int>& nums) {
        sort(nums.begin(), nums.end());
        int n = nums.size();
        for (int i = 0; i < n; ++i) {
            if (nums[i] != i) {
                return i;
            }
        }
        return n;
    }
};

内容的提问来源于stack exchange,提问作者Abhimanyu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 23:03:33