zoukankan      html  css  js  c++  java
  • 41. First Missing Positive

    一、题目

      1、审题

      2、分析:

        在时间复杂度为 O(n)条件下求出数组中所缺失的最小正整数。

    二、解答

      1、思路:

        数组大小为 n, 则所缺失的正整数范围 为 1~n+1;考虑将下标为 i 的位置放入对应大小为 i +1 的元素,则最终遍历时查找下标 i 对应的元素不是 i + 1则为缺失的最小正整数。

    class Solution {
        public int firstMissingPositive(int[] nums) {
    
            // 将 下标为 i 的位置对应放置数字大小为 i+1;
           int len = nums.length;
            for (int i = 0; i < len; i++) {
                while(nums[i] > 0 && nums[i] <= len
                        && nums[nums[i] - 1] != nums[i]) {
                    swap(nums, i, nums[i] - 1);
                }
            }
    
        // 查找
    for (int i = 0; i < len; i++) { if(nums[i] != i + 1) return i + 1; } return len + 1; } private void swap(int[] nums, int i, int j) { int tmp = nums[i]; nums[i] = nums[j]; nums[j] = tmp; } }
  • 相关阅读:
    Kubernetes 部署微服务电商平台(16)
    Android开发如何去除标题栏title
    eclipse中logcat偶尔不显示log的问题解决办法
    Two Sum
    事件的解除与绑定
    使用 Canvas 绘图
    表单脚本
    事件
    DOM2 和 DOM3
    DOM扩展
  • 原文地址:https://www.cnblogs.com/skillking/p/9581439.html
Copyright © 2011-2022 走看看