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系列 文章被收录于专栏
系列的题解