41. First Missing Positive

package LeetCode_41

/**
 * 41. First Missing Positive
 * https://leetcode.com/problems/first-missing-positive/description/
 * 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

Follow up:
Your algorithm should run in O(n) time and uses constant extra space.
 * */
class Solution {
    /*
    * solution 1: use array to record appearance number, then find out the missing one,
    * Time complexity:O(n), Space complexity:O(n);
    * */
    fun firstMissingPositive(nums: IntArray): Int {
        val n = nums.size
        val hasNumbers = BooleanArray(n+1)
        for (num in nums) {
            if (num <= 0 || num >= hasNumbers.size) {
                continue
            }
            hasNumbers[num] = true
        }
        //because smallest positive integer is from 1
        for (i in 1 until hasNumbers.size) {
            if (!hasNumbers[i]) {
                return i
            }
        }
        return hasNumbers.size
    }
}

 

posted @ 2020-10-01 16:58  johnny_zhao  阅读(81)  评论(0编辑  收藏  举报