第三大的数
给你一个非空数组,返回此数组中 第三大的数字 。如果不存在,则返回数组中最大的数。int max(int* nums, int numsSize)
{
int i = 0;
int flag = 0;
int x = nums;
while (i < numsSize)
{
if (x < nums)
{
x = nums;
flag = i;
}
i++;
}
return flag;
}
int min(int* nums, int numsSize)
{
int i = 0;
int flag = 0;
int x = nums;
while (i < numsSize)
{
if (x > nums)
{
x = nums;
flag = i;
}
i++;
}
return flag;
}
int thirdMax(int* nums, int numsSize){
if (numsSize < 3)
{
return nums;
}
int i = min(nums, numsSize);
int f = nums;
int k = 0;
int x = nums;
int count = 1;
for (int j = 0; j < 2; j++)
{
k = max(nums, numsSize);
if (x != nums)
{
count++;
}
x = nums;
for (int j = 0; j < numsSize; j++)
{
if (nums == x)
{
nums = nums;
}
}
}
if (count < 3)
{
return f;
}
k = max(nums, numsSize);
return nums;
}
这段代码有什么问题吗 这段代码存在以下问题:
1. 在max()和min()函数中,返回的是最大值和最小值的下标,而不是数值本身,这会导致后续代码的复杂度增加。
2. 在thirdMax()函数中,使用了两个嵌套的循环进行查找第三大的数,这会导致时间复杂度较高。
3. 在查找第三大的数时,代码中使用了一个计数器count ,但是没有对其进行正确的更新,导致计数器的值不正确。
4. 在查找第三大的数时,代码中使用了两个嵌套的循环,但是内层循环中又使用了一个相同的变量j ,这会导致变量重名的问题。
综上所述,这段代码需要进行重构和优化。 泪目
页:
[1]