美文网首页
数组类41--缺失的第一个正数(H)

数组类41--缺失的第一个正数(H)

作者: 干LeetCode | 来源:发表于2019-08-26 23:44 被阅读0次
image.png

AC代码

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

精髓
纯智商题,没什么技巧,想出来就做的出来,想不出来就做不出来。
对当前数字进行重新放置位置,比如[3,5,4,1],第一个是3,就把他放到3 - 1即第2个位置,并同时把3这个数的位置置为-1,变成[-1, 5, 3,1],同时tmp值记录下了4,进行同样的处理,4应该放到4 -1即第3个位置。。。如此下去,数组可以变成包含某些正数的数组,第一个下标和数值不一致的就是答案,当然要考虑其他特殊情况,比如全是负数,或者全是同一个数等等。case还是比较多的,容易出错。

相关文章

  • 数组类41--缺失的第一个正数(H)

    AC代码 精髓纯智商题,没什么技巧,想出来就做的出来,想不出来就做不出来。对当前数字进行重新放置位置,比如[3,5...

  • 数组-Leetcode_42-缺失的第一个正数

    题目链接:缺失的第一个正数 解法, 1、遍历数组,将数组归位,如下标为0,存放1,下标1,存放2,依此类推 2、从...

  • ARTS第四周20200613

    Algorithm 缺失的第一个正数 给你一个未排序的整数数组,请你找出其中没有出现的最小的正整数。 示例 1: ...

  • 3个问题

    找到缺失的第一个正数 publicintfirstMissingPositive(int[]nums){ Hash...

  • 41. 缺失的第一个正数

    题目链接: 41. 缺失的第一个正数 题目描述: 给定一个未排序的整数数组,找出其中没有出现的最小的正整数。 示例...

  • 41. 缺失的第一个正数

    41. 缺失的第一个正数 给你一个未排序的整数数组,请你找出其中没有出现的最小的正整数。 示例 1: 输入: [1...

  • 关于LeetCode中官方对于Swift解题API的设计错误

    问题 在LeetCode的题目 缺失的第一个正数[https://leetcode-cn.com/problems...

  • 41. 缺失的第一个正数

    41. 缺失的第一个正数(难度困难) 题目链接:https://leetcode-cn.com/problems/...

  • 力扣 41 缺失的第一个正数

    题意:找到数组中缺失的一个正数 思路:遍历数组,把数放到指定的index上,比如1放到index为0的位置,2放到...

  • Array.from()方法

    Array.from()方法就是将一个类数组对象或者可遍历对象转换成一个真正的数组。 将类数组对象转换为真正数组:...

网友评论

      本文标题:数组类41--缺失的第一个正数(H)

      本文链接:https://www.haomeiwen.com/subject/ppwjectx.html