徐玄清的专栏

菜鸡一只

Algorithms—41.First Missing Positive

思路:要求时间复杂度线性,空间复杂度常量。不能使用计数排序。只能遍历查看然后交换位置。找到每个值正确的位置,然后再遍历查询看到第一个不对应的就是缺省值

public class Solution {
    public int firstMissingPositive(int[] nums) {
    	for (int i = 0; i < nums.length; i++) {
			if (nums[i]!=i+1) {
				if (nums[i]<=nums.length&&nums[i]>0&&nums[nums[i]-1]!=nums[i]) {
					int k=nums[nums[i]-1];
					nums[nums[i]-1]=nums[i];
					nums[i]=k;
					i--;
				}
			}
		}
    	for (int i = 0; i < nums.length; i++) {
			if (nums[i]!=i+1) {
				return i+1;
			}
		}
    	return nums.length+1;
    
        
    }
}


耗时:312ms,中游水平



阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/corpsepiges/article/details/46799395
个人分类: leetcode
上一篇Algorithms—38.Count and Say
下一篇Algorithms—50.Pow(x, n)
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭