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

    方法比较巧,先把所有元素的值-1,重新组织元素使A[i] = i,这样只要找到第一个A[i] != i 的 i。注意要用while循环,for循环的continue是从下一次循环开始的。

     1 class Solution {
     2 public:
     3     int firstMissingPositive(int A[], int n) {
     4         int tmp;
     5         for (int i = 0; i < n; ++i) {
     6             A[i]--;
     7         }
     8         int i = 0;
     9         while (i < n) {
    10             if (A[i] != i && A[i] >= 0 && A[i] < n && A[i] != A[A[i]]) {
    11                 tmp = A[i];
    12                 A[i] = A[A[i]];
    13                 A[tmp] = tmp;
    14             } else {
    15                 i++;
    16             }
    17         }
    18         for (int i = 0; i < n; ++i) {
    19             if (A[i] != i) {
    20                 return i + 1;
    21             }
    22         }
    23         return n + 1;
    24     }
    25 };
  • 相关阅读:
    docker
    opencart
    Why is setTimeout(fn, 0) sometimes useful?
    linux下php环境配置
    xampp for linux
    Where to go from here
    freefcw/hustoj Install Guide
    khan academy js
    SDWebImage
    基于OpenCV 的iOS开发
  • 原文地址:https://www.cnblogs.com/easonliu/p/3630599.html
Copyright © 2011-2022 走看看