博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[LeetCode] 41. First Missing Positive
阅读量:6840 次
发布时间:2019-06-26

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

Problem

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.

Solution

class Solution {    public int firstMissingPositive(int[] A) {        int i = 0;        while(i < A.length){            //we want every A[i] = i+1, so we can find the first missing one            //if A[i] is negative or out of scope, or it's in desired position, continue            if(A[i] == i+1 || A[i] <= 0 || A[i] > A.length) i++;            //if the number at the desired position of A[i] isn't A[i], swap them            else if(A[A[i]-1] != A[i]) swap(A, i, A[i]-1);            //otherwise, A[A[i]-1] == A[i], we have a duplicate, move on            else i++;        }                //now check from the beginning        i = 0;        while(i < A.length && A[i] == i+1) i++;        return i+1;    }        private void swap(int[] A, int i, int j){        int temp = A[i];        A[i] = A[j];        A[j] = temp;    }}

转载地址:http://pzhkl.baihongyu.com/

你可能感兴趣的文章
高性能和可扩展的React-Redux
查看>>
组复制官方翻译五、Group Replication Security
查看>>
spring 注解试事物源码解析
查看>>
推荐一个非常好用的Chrome扩展应用,用于美化Json字符串
查看>>
模板方法模式
查看>>
CSS------当内容超出div宽度后自动换行和限制文字不超出div宽度和高度
查看>>
MySQL优化系列(二)--查找优化(1)(非索引设计)
查看>>
提高WPF程序性能的几条建议
查看>>
nginx常用功能全揭秘
查看>>
Spark(四) -- Spark工作机制
查看>>
CSS3中的选择器
查看>>
追求极致的AI·OS——AI·OS引擎平台
查看>>
Spark PruneDependency 依赖关系 RangePartitioner
查看>>
Java与Excel的交互!-
查看>>
使用 WebIDE 三分钟上手函数计算
查看>>
一. synchronized 的局限性 与 Lock 的优点
查看>>
大龄码农经验那么丰富,为什么很多公司都不招?
查看>>
一辈子不用考试?你可能是个假程序员
查看>>
利用WSS搭建学生作业平台
查看>>
刚进入win7系统就提示检测到一个硬盘问题的解决方法
查看>>