找出数组中从未出现的最小正整数java实现

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了找出数组中从未出现的最小正整数java实现相关的知识,希望对你有一定的参考价值。

 1 /**
 2      * 找出未出现的最小正整数
 3      * @param A
 4      * @param n
 5      * @date 2016-10-7
 6      * @author shaobn
 7      */
 8     public static int findArrayMex(int[] a,int n){
 9         int count = n;
10         int temp = 0;
11         int dir = 1;
12         int num = 0;
13         for(int i = 0;i<count-1;i++){
14             if(a[i]>a[i+1]){
15                 temp = a[i];
16                 a[i]= a[i+1];
17                 a[i+1] = temp;        
18             }
19             if(i==count-2){
20                 count--;
21                 i=-1;
22             }
23         }
24         if(a[0]>1 || a[n-1]<1){
25             return 1;
26         }else {
27             for(int i =0;i<n-1;i++){
28                 if(a[i]>0){
29                     num = i;
30                     break;
31                 }                
32             }
33             if(a[num]>1){
34                 return 1;
35             }else if(a[num]==1) {
36                 for(int i =num+1;i<n-1;i++){
37                     if(a[i]-a[num]>dir){
38                         return a[num]+dir;
39                     }else {
40                         dir++;
41                     }
42                 }
43             }
44         }
45         return a[num]+dir;
46     }

 

以上是关于找出数组中从未出现的最小正整数java实现的主要内容,如果未能解决你的问题,请参考以下文章

JAVA作业,找出一个数组中非零最小正整数

Java中,给一个整数数组,找出其中所有的正整数,并求所有正整数的和

Leetcode练习(Python):数组类:第41题:给你一个未排序的整数数组,请你找出其中没有出现的最小的正整数。你的算法的时间复杂度应为O(n),并且只能使用常数级别的额外空间。

《Java练习题》进阶练习题

41.给你一个未排序的整数数组,请你找出其中没有出现的最小的正整数。

2021-07-12:缺失的第一个正数。给你一个未排序的整数数组 nums ,请你找出其中没有出现的最小的正整数。请你实现时间复杂度为 O(n) 并且只使用常数级别额外空间的解决方案。比如[3,4,5