LeetCode First Missing Positive

原创 2015年07月10日 09:02:04

思路:

要求找到第一个应该属于[1,nums.size()]范围内的正数却又目前不在的。

从头开始,挨个把各个数换到相应地位置,然后再扫一遍数组,看哪一个数不在它应在的位置上。

时间复杂度O(N),空间复杂度O(1)。

class Solution {
private:
    void change(vector<int> &nums) {
        int n = nums.size();
        for(int i = 0; i < nums.size(); ++i) {
            while(nums[i] != i+1) {
                if(nums[i] < 0 || nums[i] > n || nums[i] == nums[nums[i] - 1]) {
                    break;
                }
                swap(nums[i], nums[nums[i] - 1]);
            }
        }
    }
public:
    int firstMissingPositive(vector<int>& nums) {
        change(nums);
        for(int i = 0; i < nums.size(); ++i) {
            if(nums[i] != i+1) {
                return i + 1;
            }
        }
        return nums.size() + 1;
    }
};

java code:

public class Solution {
    public int firstMissingPositive(int[] nums) {
        if(nums == null || nums.length == 0) return 1;

        for(int i = 0; i < nums.length; ++i) {
            while(nums[i] > 0 && nums[i] <= nums.length && nums[i] != i + 1) {
                if(nums[nums[i] - 1] == nums[i]) break;
                swap(nums, i, nums[i] - 1);
            }
        }
        for(int i = 0; i < nums.length; ++i) {
            if(nums[i] != i + 1) return i + 1;
        }
        return nums.length + 1;
    }

    void swap(int[] nums, int i, int j) {
        int temp = nums[i];
        nums[i] = nums[j];
        nums[j] = temp;
    }
}
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

leetcode:First Missing Positive

一、 题目 给出一个未排序的数组,找出第一个丢失的正整数, 例如:给出[1,2,0] 返回3    给出[3,4,-1,1] 返回2 注:算法是O(n)的时间和常量的空间 二、 分析 一开...

LeetCode | First Missing Positive

题目: Given an unsorted integer array, find the first missing positive integer. For example, Given ...

LeetCode First Missing Positive

Given an unsorted integer array, find the first missing positive integer. For example, Given [1,...

DAY28:leetcode #41 First Missing Positive

Given an unsorted integer array, find the first missing positive integer. For example, Given [1,...

Leetcode NO.41 First Missing Positive

本题题目要求如下: Given an unsorted integer array, find the first missing positive integer. For exam...

【LeetCode】41. First Missing Positive

问题描述https://leetcode.com/problems/first-missing-positive/#/descriptionGiven an unsorted integer arra...

leetcode 41. First Missing Positive

1.题目 Given a collection of candidat...

leetcode之路041 First Missing Positive

题目大意:给定一个没有排序的整数数组,找到第一个未出现的正数。 例:[1,2,0]结果为3。[3,4,1,-1]结果为2。 要求:算法必需是O(n)时间,并且是常量空间。 思路一: 1、利用has...

Leetcode41. First Missing Positive

Leetcode First Missing Positive

LeetCode OJ-41-First Missing Positive

题目:Given an unsorted integer array, find the first missing positive integer. For example, Given [1...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)