leetcode41. First Missing Positive
来源:互联网 发布:校园网络借贷 编辑:程序博客网 时间:2024/06/06 07:42
41. First Missing Positive
Given an unsorted integer array, find the first missing positive integer.
For example,
Given [1,2,0] return 3,
and [3,4,-1,1] return 2.
Your algorithm should run in O(n) time and uses constant space.
解法一
将数组中的元素放入到set里面,然后从1到nums的长度判断是否在set中,如果不在,则缺当前值。
public class Solution { public int firstMissingPositive(int[] nums) { if (nums.length == 0 || nums == null) { return 1; } Set<Integer> set = new HashSet<Integer>(); for (int num : nums) { set.add(num); } for (int i = 0; i < nums.length; i++) { if (!set.contains(i + 1)) { return i + 1; } } return nums.length + 1; }}
解法二
O(1)的空间复杂度,将每个元素交换到应在的位置,最后看哪一位不符合要求。
public class Solution { public int firstMissingPositive(int[] nums) { if (nums.length == 0 || nums == null) { return 1; } for (int i = 0; i < nums.length; i++) { while (nums[i] != i + 1 && nums[i] > 0 && nums[i] - 1 >= 0 && nums[i] - 1 < nums.length && nums[i] != nums[nums[i] - 1]) { swap(nums, i, nums[i] - 1); } } for (int i = 0; i < nums.length; i++) { if (nums[i] != i + 1) { return i + 1; } } return nums.length + 1; } private void swap(int[] nums, int a, int b) { int temp = nums[a]; nums[a] = nums[b]; nums[b] = temp; }}
阅读全文
1 0
- [LeetCode41] First Missing Positive
- Leetcode41 First Missing Positive
- LeetCode41. First Missing Positive
- leetcode41. First Missing Positive
- leetcode41. First Missing Positive
- Leetcode41. First Missing Positive
- LeetCode41——First Missing Positive
- leetcode41~First Missing Positive Add to List
- LeetCode41/19 First Missing Positive/Remove Nth Node From End of List ****
- LeetCode: First Missing Positive
- LeetCode First Missing Positive
- LeetCode: First Missing Positive
- [Leetcode] First Missing Positive
- leetcode12: First Missing Positive
- First Missing Positive
- [LeetCode] First Missing Positive
- [Leetcode] First Missing Positive
- leetcode First Missing Positive
- Markdown Editor--Haroopad Installation on Ubuntu16.04
- MySQL-索引03
- Android 项目中使用调用jni库调用本地C/C++方法
- 宏定义中的 # , ##以及 _ _VA_ARGS_ _ 的作用
- 微信公众平台自带的生成公众号二维码的连接
- leetcode41. First Missing Positive
- spring boot配置文件
- oracle数据库启动listen报错
- Java的JAR文件入门篇
- lass使用方法
- macbook 远程操作linux后台
- ArrayList底层几个注意的点
- DeepLearning(基于caffe)实战项目(10)--Python编写网络配置文件
- Java面向对象的理解