黑马程序员技术交流社区

标题: 给出一个无序的正数数组,找出其中没有出现的最小正整数 [打印本页]

作者: zzdsw    时间: 2018-4-18 12:23
标题: 给出一个无序的正数数组,找出其中没有出现的最小正整数
样例

如果给出 [1,2,0], return 3
如果给出 [3,4,-1,1], return 2

这题目是在刷Leetcoder上看到的,第一时间看到后没有思路,去网上找了找,发现有很多方法。但是其他大牛用的算法很多看不懂,有些大牛给出了好多的算法来解决,并且分别衡量出每种算法的时间复杂度和空间复杂度。

这里暂且不深究什么事时间复杂度和空间复杂度,就以我目前所掌握的知识,自己用代码实现了。下面是代码:

  • public class Solution {  
  •     /**     
  •      *
  •      *
  •      */  
  •     public int firstMissingPositive(int[] A) {  
  •         // 代码如下     
  •         if (A == null) {  
  •             return 1;  
  •         }  
  •   
  •         for (int i = 0; i < A.length; i++) {  
  •             while (A > 0 && A <= A.length && A != (i+1)) {  
  •                 int tmp = A[A-1];  
  •                 if (tmp == A) {  
  •                     break;  
  •                 }  
  •                 A[A-1] = A;  
  •                 A = tmp;  
  •             }  
  •         }  
  •   
  •         for (int i = 0; i < A.length; i ++) {  
  •                 if (A != i + 1) {  
  •                     return i + 1;  
  •                 }  
  •         }  
  •   
  •         return A.length + 1;  
  •   
  •     }  
  • }  
  • public static void main(String [] args){
  •     int [] arr = {1,2,4,5,8,9,7,};
  •     firstMissingPositive(arr)
  • }









欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2