TOP101题解 | BM53#缺失的第一个正整数#
缺失的第一个正整数
https://www.nowcoder.com/practice/50ec6a5b0e4e45348544348278cdcee5
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
* @author Senky
* @date 2023.08.26
* @par url https://www.nowcoder.com/creation/manager/content/584337070?type=column&status=-1
* @brief 排序
* @param nums int整型一维数组
* @param numsLen int nums数组长度
* @return int整型
*/
#include <stdlib.h>
int compar(const void*p1, const void* p2)
{
return (*(int*)p1 - *(int*)p2);
}
int minNumberDisappeared(int* nums, int numsLen )
{
// write code here
qsort(nums, numsLen, sizeof(nums[0]), compar);
/*缺的数默认为result,初始为1*/
int result = 1;
for(int i = 0; i < numsLen; i++)
{
if(nums[i] == result)/*出现了result那么就++*/
{
result++;
}
else if(nums[i] > 0)/*没出现result,但是元素大于0,则result必定缺失的正整数*/
{
break;
}
}
return result;
}
TIPs:
虽然题目要求的复杂度为O(n),但是对于写代码的我来说用快排很方便,几行搞定,O(n)的排序算法也有插入排序,单单对于排序没必要这么钻牛角尖,其余部分的时间复杂度也是O(n)就可以了;
#TOP101#TOP101-BM系列 文章被收录于专栏
系列的题解
查看10道真题和解析