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

    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.

    int firstMissingPositive(vector<int>& nums) {
        int n = nums.size(), t, i;
        for(i = 0; i < n; i++)
        {
            t = nums[i];
            while(t > 0 && t < n && nums[t-1] != t)
            {
                swap(nums[i], nums[t-1]);
                t = nums[i];
            }
        }
        for(i = 0; i < n; i++)
        {
            if(nums[i] != i+1)
                return i+1;
        }
        return n+1;
    }

    Idea:
    *
    * We can move the num to the place whcih the index is the num.
    *
    * for example, (considering the array is zero-based.
    * 1 => A[0], 2 => A[1], 3=>A[2]
    *
    * Then, we can go through the array check the i+1 == A[i], if not ,just return i+1;

  • 相关阅读:
    C#_Assembly-Reflection_程序集与反射
    C#_event_事件
    C#_扩展方法
    C#_Delegate_泛型
    C#_正则表达式
    C#_序列化
    Unity_ClickToShow_FadeInAndOut
    RecordToday
    写作技巧
    高效休息法
  • 原文地址:https://www.cnblogs.com/argenbarbie/p/5245569.html
Copyright © 2011-2022 走看看