博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
41. First Missing Positive (JAVA)
阅读量:5009 次
发布时间:2019-06-12

本文共 1011 字,大约阅读时间需要 3 分钟。

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

Example 1:

Input: [1,2,0]Output: 3

Example 2:

Input: [3,4,-1,1]Output: 2

Example 3:

Input: [7,8,9,11,12]Output: 1

Note:

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

 

因为不能额外使用空间,所以不能用HashTable,利用原本的数组记录状态。将值为正整数的数字放到对应值-1的下标位置。

注意无限循环:比如[1,1],所以nums[nums[i]-1]==nums[i]的情况要排除。

class Solution {    public int firstMissingPositive(int[] nums) {        int tmp;        int i = 0;        while(i < nums.length){            if(nums[i] < nums.length && nums[i] > 0 && nums[i] != i+1 && nums[nums[i]-1]!=nums[i]){                //put nums[i] at position of nums[i]-1                tmp = nums[i];                nums[i] = nums[tmp-1];                nums[tmp-1] = tmp;            }            else{                i++;            }        }                for(i = 0; i < nums.length; i++){            if(nums[i] != i+1) break;        }        return i+1;    }}

 

转载于:https://www.cnblogs.com/qionglouyuyu/p/10815320.html

你可能感兴趣的文章
Java Socket编程 - 基于TCP方式的二进制文件传输【转】http://blog.csdn.net/jia20003/article/details/8248221...
查看>>
阅读之https及加密原理
查看>>
HDOJ4550 卡片游戏 随便销毁内存的代价就是wa//string类的一些用法
查看>>
css文本样式text、字体样式font
查看>>
洛谷 P1020 导弹拦截(LIS)
查看>>
python判断图片是否损坏
查看>>
MySQL服务启动:某些服务在未由其他服务或程序使用时将自动停止
查看>>
软件工程第四周作业 - 单元测试
查看>>
KNN与SVM对比&SVM与逻辑回归的对比
查看>>
php 现在拓展地址
查看>>
【Java并发编程】之十六:深入Java内存模型——happen-before规则及其对DCL的分析(含代码)...
查看>>
团队个人冲刺第三天
查看>>
unit
查看>>
2017-10-17 NOIP模拟赛2
查看>>
How to install ia32-libs in Ubuntu 14.04 LTS (Trusty Tahr)
查看>>
ACM/ICPC 之 模拟 (HNUOJ 13391-换瓶模拟)
查看>>
JavaWeb学习——JSP基础
查看>>
Eclipse tomcat server 无法添加项目
查看>>
黑寡妇黄飞鸿
查看>>
leetcode 217 Contains Duplicate 数组中是否有重复的数字
查看>>