zoukankan      html  css  js  c++  java
  • 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.

    Analyse: 

    1. Newest method: 0ms

     1 class Solution {
     2 public:
     3     int firstMissingPositive(vector<int>& nums) {
     4         if(nums.empty()) return 1;
     5 
     6         nums.push_back(-1);
     7         for(int i = 0; i < nums.size(); i++){
     8             while(nums[i] > 0 && nums[i] < nums.size() && i < nums.size()) {
     9                 if(nums[i] != i && nums[i] != nums[nums[i]])
    10                     swap(nums[nums[i]], nums[i]);
    11                 else i++;
    12             }
    13         }
    14         for(int i = 1; i < nums.size(); i++){
    15             if(nums[i] != i) return i;
    16         }
    17         return nums.size();
    18     }
    19 };

    2. Old method

    class Solution {
    public:
        // Create a new vector of size nums.size()
        // Ignore the negative values and values larger than nums.size()
        // Put corresponding numbers in the array 
        // Scan the array for the second time
        int firstMissingPositive(vector<int>& nums) {
            if(nums.empty()) return 1;
            
            int n = nums.size();
            vector<int> temp(n + 1, 0); // Index start from 0
            for(int i = 0; i < nums.size(); i++){
                if(nums[i] < 0 || nums[i] > n) 
                    continue;
                temp[nums[i]] = nums[i];
            }
            for(int i = 1; i <= n + 1; i++){
                if(temp[i] == 0) return i;
            }
            return n + 1;
        }
    };
  • 相关阅读:
    R 语言
    Maven
    IntelliJ IDEA
    Windows Terminal
    pip
    批处理编程案例
    Windows DOS命令批处理脚本
    Day15 T1 库特的向量
    Day12 T1 少女觉
    Day10 T2 邦德
  • 原文地址:https://www.cnblogs.com/amazingzoe/p/5691870.html
Copyright © 2011-2022 走看看