为什么我的代码显示超出leet代码的时间限制

问题描述 投票:0回答:1

问。给定一个整数数组 nums,如果任何值在数组中出现至少两次,则返回 true,如果每个元素都不同,则返回 false。

bool containsDuplicate(int* nums, int numsSize) {
    int i, j;
    int k = 0;
    int f = 0;
    for (i = k + 1; i < numsSize; i++)
    {
        if (nums[k] == nums[i])
        {
            f = 1;
            break;
        }

        if (i == numsSize - 1)
        {
            k++;
            i = k;
        }
    }

    if (f == 1)
        return true;
    else 
        return false;
}   

为什么上面的代码在leetcode上显示超出时间限制? 请解决可能与上述代码相关的问题。

我试图仅在一个循环中检查条件而不嵌套它们,但代码失败了

c
1个回答
0
投票

仅当

i
大于或等于
numsSize
时,for 循环才会终止,但是
i
仅当
i
等于
numsSize - 1
时才会被修改。该循环永远不会终止,因此您会收到 TLE 错误,因为您的程序花费的时间太长。

© www.soinside.com 2019 - 2024. All rights reserved.