leetcode相关C++算法解答: https://github.com/Nereus-Minos/C_plus_plus-leetcode
题目:
给定一个未排序的整数数组,找出其中没有出现的最小的正整数。
示例 1:
输入: [1,2,0] 输出: 3
示例 2:
输入: [3,4,-1,1] 输出: 2
示例 3:
输入: [7,8,9,11,12] 输出: 1
说明:你的算法的时间复杂度应为O(n),并且只能使用常数级别的空间。
思路一:
首先将数组排序;在进行情况分析:一。nums为空或最大的数小于1或最小的数大于1。二。nums长度为1。三。nums长度大于1且最大>1最小<1,此时需要二分查找找到接近1的位置,然后再进行依次查找到不存在的最小数
思路二(四次遍历O(n)):
1.先查找是否有1,没有直接返回1
//2.有就将负数,大于nums.size的数置1,
//3.然后借用哈希表思想(,设定例如,nums[2] 元素的负号意味着数字 2 出现在 nums 中。n