zoukankan      html  css  js  c++  java
  • LeetCode 041 First Missing Positive

    题目要求: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.

    代码如下:

    class Solution {
    public:
        int firstMissingPositive(int A[], int n) {
    
            for (int i = 0, temp = -1; i < n; i++) {
                while (A[i] - 1 >= 0 && A[i] - 1 < n && A[i] - 1 != i) {
                    swap(A, i, A[i] - 1);
                    if (A[i] == temp) {
                        break;
                    }
                    else {
                        temp = A[i];
                    }
                }
            }
            for (int i = 0; i < n; i++) {
                if (A[i] - 1 != i) {
                    return i + 1;
                }
            }
            return n + 1;
        }
    
    private:
        void swap(int A[], int idx1, int idx2) {
            A[idx1] ^= A[idx2];
            A[idx2] ^= A[idx1];
            A[idx1] ^= A[idx2];
        }
    };
  • 相关阅读:
    博弈论嘻嘻
    cf之kmp匹配稍稍改一改
    点分治开始!
    后缀数组
    cf之 前缀和差分
    AJAX 数据库实例
    常用jar包用途
    cxf客户端所需最少jar包
    Dbutis
    dbutils入门
  • 原文地址:https://www.cnblogs.com/510602159-Yano/p/4279247.html
Copyright © 2011-2022 走看看