zoukankan      html  css  js  c++  java
  • 41. First Missing Positive

        /*
         * 41. First Missing Positive 
         * 2016-5-4 by Mingyang
         * 这道题目要求线性时间和constant空间,本来我想多用一个数组,把对应的数字直接填满另外的数组
         * ,但是如果只能有一个array的话,就是另外一个情况呢
         * 需要考虑那个地方是否有值了 A[0]=1,A[1]=2,A[2]=3...如果抽到了3,就把A2换成3
         * ,不过一定要i--,因为只有减了以后再判断是不是漏掉一个什么的
         * 首先是我自己的代码,写的确实比较丑,因为自己是A[0]=0,A[1]=1的思路,殊不知稍稍变通一下就可以世界变的更加美好
         */
        public int firstMissingPositive1(int[] nums) {
            int len=nums.length;
            if(nums==null||len==0)
              return 1;
           if(len==1)
             return nums[0]==1?2:1;
            for(int i=0;i<len;i++){
                if(nums[i]<0||nums[i]>len-1||nums[i]==nums[nums[i]])
                  continue;
                else{
                 swap2(nums,i,nums[i]);
                 i--;
                }
            }
            for(int i=0;i<len;i++){
                if(nums[i]!=i&&i!=0){
                    return i;
                }
            }
            if(nums[0]!=0&&nums[0]==nums[len-1]+1){
               return nums[0]+1; 
            }
            return len;
        }
        public void swap2(int[] array, int j,int k){
            int temp=array[j];
            array[j]=array[k];
            array[k]=temp;
        }
        //稍稍错位一下能让代码更加简单
        public int firstMissingPositive(int[] A) {
            if (A == null || A.length == 0)
                return 1;
            for (int i = 0; i < A.length; i++) {
                if (A[i] <= A.length && A[i] > 0 && A[A[i] - 1] != A[i]) {
                    int temp = A[A[i] - 1];
                    A[A[i] - 1] = A[i];
                    A[i] = temp;
                    i--;
                }
            }
            for (int i = 0; i < A.length; i++) {
                if (A[i] != i + 1)
                    return i + 1;
            }
            return A.length + 1;
        }
  • 相关阅读:
    路由器的配置
    逻辑卷
    valn配置
    交换分区和虚拟内存
    TCP和UDP
    语法练习1
    oracl通用函数
    AOP
    oracle查询操作
    Oracle中的转换函数
  • 原文地址:https://www.cnblogs.com/zmyvszk/p/5460752.html
Copyright © 2011-2022 走看看