缺失的第一个正数
算法标签:数组、哈希表、计数排序
给出一个无序的整数数组,要从中找到一个最小的没有出现过的正整数,可以先排序,排序之后从前往后扫描,扫描到第一个没有出现过的整数就可以了,排序的时间复杂度是 O( nlogn ),时间复杂度比较高,在考虑一个算法的时候优先考虑时间复杂度
计算机中 c++ 的指令大概只能执行 10^8 次,所以时间复杂度的要求更强一些
先把所有的数放到一个哈希表里面,放到哈希表之后,再从小到大枚举每一个正整数,直到找到第一个没有出现过的正整数为止,这个就是答案
首先,先把所有的数放到一个哈希表里面,这一步的时间复杂度为 O( n ),第二步枚举最多从 1 开始枚举到 n + 1,枚举到 n + 1 的时候,表示已经枚举了 n + 1 个数,但是我们一共只有 n 个数,当我们枚举到 n + 1 的时候,必然会在这个过程中出现一个没有出现过的数,第二步枚举的时间复杂度也是 O( n )
最终整个算法的时间