首页 > 代码库 > First Missing Positive
First Missing Positive
题目
Given an unsorted integer array, find the first missing positive integer.
For example,
Given[1,2,0]
return3
,
and[3,4,-1,1]
return2
.Your algorithm should run in O(n) time and uses constant space.
方法
将A[i] 交换到 A[A[i] - 1]中,需要注意临界条件。PS:直接hash太浪费空间。
public int firstMissingPositive(int[] A) { int len = A.length; for (int i = 0; i < len; ) { if (A[i] > 0) { if (A[i] < len && A[i] != i + 1 && A[i] != A[A[i] - 1]) { int tempOne = A[i]; int tempTwo = A[A[i] - 1]; A[i] = tempTwo; A[tempOne - 1] = tempOne; } else { i++; } } else { i++; } } for (int i = 0; i < len; i++) { if (A[i] != i + 1) { return i + 1; } } return len + 1; }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。