给定一个无重复元素的整数数组nums,请你找出其中没有出现的最小的正整数 进阶:你能用O(n) 时间复杂度并且O(1)的空间复杂度的方法实现吗 数据范围: -231<=nums[i]<=231-1 0<=len(nums)<=5*105-笔试面试资料

这是qklbishe.com第16647 篇笔试面试资料
提供答案分析,通过本文《给定一个无重复元素的整数数组nums,请你找出其中没有出现的最小的正整数
进阶:你能用O(n) 时间复杂度并且O(1)的空间复杂度的方法实现吗
数据范围: -231<=nums[i]<=231-1 0<=len(nums)<=5*105-笔试面试资料》可以理解其中的代码原理,这是一篇很好的求职学习资料
本站提供程序员计算机面试经验学习,笔试经验,包括字节跳动/头条,腾讯,阿里,美团,滴滴出行,网易,百度,京东,小米,华为,微软等互联网大厂真题学习背诵。

答案:

给定一个无重复元素的整数数组nums,请你找出其中没有出现的最小的正整数
进阶:你能用O(n)时间复杂度并且O(1)的空间复杂度的方法实现吗
数据范围:
-231<=nums[i]<=231-1
0<=len(nums)<=5*105
给定一个无重复元素的整数数组nums,请你找出其中没有出现的最小的正整数          进阶:你能用O(n) 时间复杂度并且O(1)的空间复杂度的方法实现吗          数据范围:    -231&lt;=nums[i]&lt;=231-1    0&lt;=len(nums)&lt;=5*105 cooking969
import java.util.*;   public class Solution {     /**      * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可      *      *       * @param nums int整型一维数组       * @return int整型      */     public int minNumberDisappeared (int[] nums) {         // write code here         int len = nums.length;         for(int i = 0; i < len; i++)             nums[i] = nums[i] - 1;         for(int i = 0; i < len; i++){             while(nums[i] >= 0 && nums[i] < len && nums[nums[i]] != nums[i])                 swap(nums, nums[i], i);         }         for(int i = 0; i < len; i++)             if(nums[i] != i)                 return i+1;         return len+1;     }          private void swap(int[] nums, int p, int q){         int temp = nums[p];         nums[p] = nums[q];         nums[q] = temp;     } }

2021-09-26 22:49:47 回复(0)

文章部分来自互联网,侵权联系删除
www.qklbishe.com

区块链毕设网(www.qklbishe.com)全网最靠谱的原创区块链毕设代做网站
部分资料来自网络,侵权联系删除!
资源收费仅为搬运整理打赏费用,用户自愿支付 !
qklbishe.com区块链毕设代做网专注|以太坊fabric-计算机|java|毕业设计|代做平台 » 给定一个无重复元素的整数数组nums,请你找出其中没有出现的最小的正整数 进阶:你能用O(n) 时间复杂度并且O(1)的空间复杂度的方法实现吗 数据范围: -231<=nums[i]<=231-1 0<=len(nums)<=5*105-笔试面试资料

提供最优质的资源集合

立即查看 了解详情