leetcode 41. First Missing Positive

来源:互联网 发布:比淘宝好的购物网站 编辑:程序博客网 时间:2024/05/29 02:21

题意:

给你一个乱序的数组,让你找出第一个缺失的正整数(原数组可能包含0和负整数),

思路:

题目要求时间复杂度为O(n),空间复杂度为O(1),所以只能借助原数组的空间来求解,很容易想到用下标来标记有没有出现。

即把出现过的整数的对应的下标的值变为负值,但原数组有负数和0干扰(当一个值为负时,不知他是原数组的初始值,还是标记后的值;0的负数依然是0)

又因为,缺失的数必定小于等于数组的长度len+1,所以可以先预处理一遍,把0和和负数的值变为len+1;

JAVA代码:

class Solution {    public int firstMissingPositive(int[] nums) {        int len = nums.length;        for(int i = 0;i<len;i++){            if(nums[i]<=0){                nums[i] = len+1;            }        }        for(int i = 0;i<len;i++){            int temp = Math.abs(nums[i]);            if(temp<=len){                if(nums[temp-1]>0){                    nums[temp-1] *= -1;                }            }        }        for(int i = 0;i<len;i++){            if(nums[i]>0){                return i+1;            }        }        return len+1;    }}

阅读全文
'); })();
1 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 麻将诀窍 欢乐单机麻将 开心麻将下载手机版 单机欢乐麻将 欢乐麻将单机版 潜江晃晃麻将下载 换个屏幕多少钱 iphone7p换个外屏多少钱 上门换屏 换个屏多少钱 换屏多少钱 iphone6p换屏 手机换个屏多少钱 iphone6s换个屏多少钱 电脑换屏 手机屏幕换屏 iphone5s换个屏多少钱 iphone3gs换屏 iphone6换个屏多少钱 液晶屏换屏 ipadmini2换屏 4s换个屏多少钱 换电脑屏 iphone6换个屏多钱 iphone5换个屏多少钱 i9220换屏 红米手机换个屏多少钱 努比亚换个屏多少钱 电脑换个屏多少钱 换个手机屏需要多少钱 qq怎么换皮肤 手机qq怎么换皮肤 手机qq皮肤怎么换 qq怎么换主题 一加怎么换主题 手机qq没vip主题怎么换自定义 win7换xp主题 换手机主题的软件 xp系统换win7主题 怎样换主题 手机主题怎么换