一、问题描述
定义一个长度为N的数组并随意赋值,找出数组中未出现的最小正整数
例如:[-2 0 3 2 3] 结果是1
[1 2 3] 结果是4
二、思路描述
本人的思路是先对该数组从小到大排序
我们已知这个最小正整数出现的范围是[1,N],只有一种特殊情况这个最小正整数为N+1,于是就把这个数组的各个元素逐个比对就好了。
1、如果数组的最小值大于1或者最大值小于1,那么这个未出现的最小正整数就是1。
2、如果数组的某个数小于1而后一个数大于1,那么这个未出现的最小正整数就是1。
3、如果数组的某个数在最小正整数出现的范围里,且后一个数不顺延,且后一个数跟这个数不相等,那么这个未出现的最小正整数就是这个数+1。
4、如果上述情况都不符合,那就是特殊情况,这个未出现的最小正整数为最大值+1;
代码如下:
如有错误,请跟笔者指出