天题系列:First Missing Positive

主要是思想,坐标和值什么的容易搞混

public class Solution {
    public int firstMissingPositive(int[] A) {
        for(int i=0; i< A.length; i++){
            if(A[i]>0 && A[i]<=A.length && A[i] != A[A[i]-1] ) // 很显然,这里A[i]代表的是那些positive的值 A[i]-1 代表的是一个坐标
            {
                int tmp = A[A[i]-1];
                A[A[i]-1] = A[i];
                A[i] = tmp;
                i--;
            }
        }
        for(int j=0; j< A.length; j++){
            if(j+1!=A[j]) return j+1;
        }
        return A.length+1;
    }
}

ref:http://www.cnblogs.com/springfor/p/3889547.html

时间: 2024-12-15 20:24:12

天题系列:First Missing Positive的相关文章

刷题41. First Missing Positive

一.题目说明 题目是41. First Missing Positive,求一个未排序队列中缺失的最小正整数.时间复杂度要求是O(n).难度是Hard,确实难. 二.我的解答 不考虑时间复杂度,首先对队列进行排序,然后从第一个正数开始,如果不是1就返回1,否则继续查找2....找不到就返回,找到就继续. 代码如下: #include<iostream> #include<vector> #include<algorithm> #include<unordered_

lintcode 中等题:First Missing Positive 丢失的第一个正整数

题目 丢失的第一个正整数 给出一个无序的整数数组,找出其中没有出现的最小正整数. 样例 如果给出 [1,2,0], return 3 如果给出 [3,4,-1,1], return 2 挑战 只允许时间复杂度O(n)的算法,并且只能使用常数级别的空间. 解题  感觉好像好像很复杂,通过率21%也是比较低的了. 找了一个很不好的方法 步骤: 1.先找出数组中正整数的最小值,Min 2.若Min>1 显然最小的不在数组中的正整数就是1 3.这里的都是最小值Min == 1的情况 对于这个情况,只需要

leetcode第40题--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,2,5,4]那就是缺3. 思路

LeetCode - 41. First Missing Positive

41. First Missing Positive Problem's Link ---------------------------------------------------------------------------- Mean: 给你一组整数,找出第一个空缺的正整数. 要求:时间O(n),空间O(n). analyse: 这题时间O(n)想了半天没想到,用O(n*logn)过的. 然后看了discuss,想法非常巧妙,自愧不如. Time complexity: O(N) v

LeetCode OJ:First Missing Positive (第一个丢失的正数)

在leetCode上做的第一个难度是hard的题,题目如下: 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. 关键是要实现0(N)的时间复杂度以及常数级

【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. [解析] 题意:给定一个数组,找出第一个缺失的正数,要求时间复杂度为O(n),空间复杂度为

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. 二. 题目分析 该题的大意是给定一个未排序的数组,该数组可能包含零或正负数,要求找出

【First Missing Positive】cpp

题目: 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 firstMissingPos

41. First Missing Positive Leetcode Python

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. 这题用的是count sort 的方法. 首先我们来复习一下count sort 已知一个正整数还未

leetCode 41.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. 思路:这个题刚開始是没有思路的,难就难在O(n)时间内