问。给定一个整数数组 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上显示超出时间限制? 请解决可能与上述代码相关的问题。
我试图仅在一个循环中检查条件而不嵌套它们,但代码失败了
仅当
i
大于或等于 numsSize
时,for 循环才会终止,但是 i
仅当 i
等于 numsSize - 1
时才会被修改。该循环永远不会终止,因此您会收到 TLE 错误,因为您的程序花费的时间太长。