数组中未出现的最小正整数 发表于 2018-10-05 | 分类于 数据结构与算法 , 题目汇总 数组中未出现的最小正整数 arr=[-1,2,3,4] 返回 1 arr=[1,2,3,4] 返回 5 1234567891011121314151617181920212223public static int missNum(int[] arr) { if (arr == null || arr.length == 0) { return 0; } int l = 0; //目前已收集 1 ~ l 上的数 int r = arr.length; // 后续最优的情况下 能收集 1 ~ r 上的数 while (l < r) { if (arr[l] == l + 1) { l++; } else if (arr[l] < l || arr[l] > r || arr[arr[l] - 1] == arr[l]) { r--; } else { swap(arr, l, arr[l] - 1); } } return l + 1; } public static void swap(int[] arr, int low, int high) { int temp = arr[low]; arr[low] = arr[high]; arr[high] = temp; }