zoukankan      html  css  js  c++  java
  • First Missing Positive 分类: Leetcode(排序) 2015-04-09 17:13 25人阅读 评论(0) 收藏

    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.

    想出这个算法的真是大神,首先,他简化了这个问题,这个问题其实与负数一点关系没有,其次,他充分利用了数组这个结构,真是一点都没有浪费。

    其实思想简单,但是想到不简单,就是把(A[i])5与A[4](A[A[i]-1])交换,这样其实是找到了一种映射。


    class Solution {
    public:
        int firstMissingPositive(int A[], int n) {
            for ( int i = 0 ; i < n; i++) {
                while(A[i] > 0 && A[i] <= n && A[A[i-1]] !=A[i])
                    swap(A[i], A[A[i]-1]);
            }
            
            for( int i = 0; i < n; ++i) {
                if (A[i] != i+1)
                    return i+1; 
            }
            return n+1;
        }
    };




    版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 相关阅读:
    Linux I2C核心、总线和设备驱动
    移植 Linux 内核
    同步、互斥、阻塞
    异步通知
    poll机制
    Linux异常处理体系结构
    字符设备的驱动
    进程间的通信—套接字(socket)
    进程间的通信—信号量
    Spring事件的应用
  • 原文地址:https://www.cnblogs.com/learnordie/p/4656940.html
Copyright © 2011-2022 走看看