zoukankan      html  css  js  c++  java
  • [Leetcode] first missing positve 缺失的第一个正数

    Given an unsorted integer array, find the first missing positive integer.

    For example,
    Given[1,2,0]return3,
    and[3,4,-1,1]return2.

    Your algorithm should run in O(n) time and uses constant space.

    题意:给定连续的数列,找出一个缺失的正数

    思路:开始理解错了题意,没有想到题中隐藏正数从1开始这么大一个信息量(不知道,我现在理解错了没)。首先想到的是用unordered_set,这样从1开始(若1不存在,就直接找到了),不断寻找值加1是否存在,从而找到缺失的正数。必须用到常数空间,恩,换个思路。遍历数组,我们将值为A[i]放在对应的位置(A[A[i]-1]),这样就按照从小到大的顺序将数组排好序了,然后再次遍历数组,找到 i+1不等于A[i]的点。值得注意的是通过交换将A[i] 放在A[A[i]-1]以后,遍历再次启动点应该是 i ,因为,新的A[i] 值是否满足A[i] =i+1还未可知。若是A[i] =i+1或是A[i]<=0只直接跳过。代码如下:

     1 class Solution {
     2 public:
     3     int firstMissingPositive(int A[], int n) 
     4     {
     5         int i=0;
     6         while(i<n)
     7         {
     8             if(A[i] !=i+1 &&A[i]>0&&A[i]<=n&&A[A[i]-1] !=A[i])
     9                 swap(A[i],A[A[i]-1]);
    10             else 
    11                 ++i;
    12         }  
    13         for(i=0;i<n;++i)
    14         {
    15             if(A[i] !=i+1)
    16                 break;
    17         }  
    18         return i+1;    
    19     }
    20 };
  • 相关阅读:
    mysql数据库
    Python中socket编程
    Python中logging模块
    Python中的多进程
    Python中并发、多线程等
    Python模块化
    Python中异常处理
    KafKa入门
    kafka入门:简介、使用场景、设计原理、主要配置及集群搭建(转)
    第一节 MongoDB介绍及下载与安装
  • 原文地址:https://www.cnblogs.com/love-yh/p/7107564.html
Copyright © 2011-2022 走看看