zoukankan      html  css  js  c++  java
  • leetcode刷题笔记四十一 缺失的第一个正数

    leetcode刷题笔记四十一 缺失的第一个正数

    源地址:41. 缺失的第一个正数

    问题描述:

    给你一个未排序的整数数组,请你找出其中没有出现的最小的正整数。

    示例 1:

    输入: [1,2,0]
    输出: 3
    示例 2:

    输入: [3,4,-1,1]
    输出: 2
    示例 3:

    输入: [7,8,9,11,12]
    输出: 1

    提示:

    你的算法的时间复杂度应为O(n),并且只能使用常数级别的额外空间。

    代码补充:

    //本题难点主要是在O(n)时间复杂度上,O(1)的空间幅度上完成
    //核心是将数组的索引与数建立关系,是nums(i) == i+1 [nums(nums(i)-1) != nums(i)]
    //通过一次循环,将数组进行排序,并且位置满足条件要求
    //对于不满足nums(i) == i+1的i,直接返回i+1
    //遍历完未发现,返回length+1
    object Solution {
        def firstMissingPositive(nums:Array[Int]): Int = {
            for(i <- 0 until nums.length){
                while(1 <= nums(i) && nums(i) <= nums.length && nums(nums(i)-1) != nums(i)){
                    val temp = nums(i)
                    nums(i) = nums(nums(i)-1)  
                    nums(temp-1) = temp
    
                }
            }
            //println(nums.mkString(" "))
            for(i <- 0 to nums.length-1){
                //println("------------------")
                //println(i)
                //println(nums(i))
                if(nums(i) != i+1) return i+1
            }
            return nums.length+1
        }
    }
    
  • 相关阅读:
    Java集合一
    集合类视图
    NIO
    IO补充
    线程图
    线程池
    Callable
    element-ui upload组件上传图片时限制图片宽高
    vue-router 使用a链接跳转至二级子页面偶尔会出现地址栏看不见路由和参数的情况
    vue中引入jquery报错问题
  • 原文地址:https://www.cnblogs.com/ganshuoos/p/12961661.html
Copyright © 2011-2022 走看看