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

系列的题解

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务