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

    Given an unsorted integer array, find the first missing positive integer.

    For example,
    Given [1,2,0] return 3,
    and [3,4,-1,1] return 2.

    Your algorithm should run in O(n) time and uses constant space.

    example [-1,-2, 1,3];

    i ++;  

    i++ ;

    i = 2  nums[2] = 1;  nums[nums[2] -1] = nums[0] exchange with nums[2] -> [1, -2, -1, 3]

    i++;

    i=3 nums[3] = 3 -> nums[2] exchange with nums[3] - > [1,-2,3,-1];

    out of loop

    anther loop  nums[0]= 1 got, nums[1] =-2 return i+1 -> 2

    public class Solution {
        public int firstMissingPositive(int[] nums) {
            int i = 0 ;
            while(i < nums.length){
                if(nums[i] == i + 1 || nums[i] <= 0 || nums[i] > nums.length) i++;
                else if(nums[i] != nums[nums[i]-1]) swap(nums, i, nums[i]-1);
                else i++;
            }
             i = 0;
            while(i < nums.length && i+1 == nums[i]) i++;
            return i+1;
        }
        public void swap(int[] nums, int i, int j){
            int temp = nums[i];
            nums[i] = nums[j];
            nums[j] = temp;
        }
    }
  • 相关阅读:
    jsonrpc
    第十章:多线程
    第九章:IO流
    第八章:集合
    第七章:常用类
    第六章:异常机制
    第四章:数组
    第三章:流程控制语句
    第二章:数据类型和运算符
    第五章:面向对象4
  • 原文地址:https://www.cnblogs.com/joannacode/p/6127899.html
Copyright © 2011-2022 走看看