码迷,mamicode.com
首页 > 其他好文 > 详细

41. First Missing Positive

时间:2018-09-03 22:31:09      阅读:210      评论:0      收藏:0      [点我收藏+]

标签:amp   wap   turn   技术   img   bubuko   span   class   n+1   

一、题目

  1、审题

技术分享图片

  2、分析:

    在时间复杂度为 O(n)条件下求出数组中所缺失的最小正整数。

 

二、解答

  1、思路:

    数组大小为 n, 则所缺失的正整数范围 为 1~n+1;考虑将下标为 i 的位置放入对应大小为 i +1 的元素,则最终遍历时查找下标 i 对应的元素不是 i + 1则为缺失的最小正整数。

class Solution {
    public int firstMissingPositive(int[] nums) {

        // 将 下标为 i 的位置对应放置数字大小为 i+1;
       int len = nums.length;
        for (int i = 0; i < len; i++) {
            while(nums[i] > 0 && nums[i] <= len
                    && nums[nums[i] - 1] != nums[i]) {
                swap(nums, i, nums[i] - 1);
            }
        }

    // 查找
for (int i = 0; i < len; i++) { if(nums[i] != i + 1) return i + 1; } return len + 1; } private void swap(int[] nums, int i, int j) { int tmp = nums[i]; nums[i] = nums[j]; nums[j] = tmp; } }

 

41. First Missing Positive

标签:amp   wap   turn   技术   img   bubuko   span   class   n+1   

原文地址:https://www.cnblogs.com/skillking/p/9581439.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!