• Leetcode-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.

    Analysis:

    The idea is to use the array itself as a table. We try put a value i on the place i-1. If the value i is out of range, i.e., <=0 || >n, then ignore it. At each position i, we check whether the A[i] is a value needed to be placed on its own position, if yes, we swap it; then we check the new A[i] again. We repeat this procedure until A[i] is a value that is out of range or the right place of value A[i] is already placed a value of A[i] (Duplicate situation), we then move the i+1 position.

    Solution:

     1 public class Solution {
     2     public int firstMissingPositive(int[] A) { 
     3         int len = A.length;
     4         if (len==0) return 1;
     5 
     6         for (int i=0;i<len;i++)
     7             if (A[i]!=i+1){
     8                 int val = A[i];
     9                 while (true){
    10                     if (val<=0 || val>len) break;
    11                     if (A[val-1]==val) break;
    12                     swap(A,val-1,i);
    13                     val = A[i];
    14                 }
    15             }
    16         
    17         int res = len+1;
    18         for (int i=0;i<len;i++)
    19             if (A[i]!=i+1){
    20                 res = i+1;
    21                 break;
    22             }
    23 
    24         return res;
    25     }
    26 
    27     public void swap(int[] A, int i, int j){
    28         int temp = A[i];
    29         A[i]=A[j];
    30         A[j] = temp;
    31     }
    32 }
  • 相关阅读:
    Python--初识函数
    Python中的文件操作
    Python中的集合
    Python中的编码和解码
    Python的关键字is和==
    Python中的字典
    Python中的列表和元组
    Python中几种数据的常用内置方法
    Python的编码
    python_while
  • 原文地址:https://www.cnblogs.com/lishiblog/p/4125346.html
Copyright © 2020-2023  润新知