题目描述:对于一个给定的数据,请设计一个0(n)的算法,返回不在数组元素中的最小正整数。<br>
测试样例:[1,2,3,5,6,3,2]<br>
返回:4
代码:
时间复杂度为O(nlogn),O(n)的实在没想出来
public class MinimumPositiveIntegerNotArray {
/**
* 获取最小正整数
*/
private int getMinimumPositiveInteger(int[] arr) {
if (arr[0] <= 0 || (arr[0] > 0 && arr[0] != 1)) {
return 1;
} else {
int position = getPosition(arr);
if (position == -1) {
return arr[arr.length - 1] + 1;
} else {
return arr[position] + 1;
}
}
}
/**
* 当数组非连续递增时,获取停止递增时的元素的位置
*/
private int getPosition(int[] arr) {
for (int i = 1; i < arr.length; i++) {
if (!(arr[i] - arr[i - 1] == 0 || arr[i] - arr[i - 1] ==