给定一个无序数组arr,找到数组中未出现的最小正整数
例如arr = [-1, 2, 3, 4]。返回1
arr = [1, 2, 3, 4]。返回5
[要求]
时间复杂度为,空间复杂度为
第一行为一个整数N。表示数组长度。
接下来一行N个整数表示数组内的数
输出一个整数表示答案
4 -1 2 3 4
1
4 1 2 3 4
5
import java.util.*; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); while (sc.hasNext()) { int n=Integer.parseInt(sc.nextLine().trim()); int[] arr=new int[n]; String[] s = sc.nextLine().trim().split(" "); for (int i = 0; i < n; i++) { arr[i]=Integer.parseInt(s[i]); } int res=new Solution().NotOccurred(arr); System.out.println(res); } } } class Solution { public int NotOccurred(int[] arr){ for (int i = 0; i < arr.length; i++) { if(arr[i]>0) swap(arr,arr[i]-1,i); } for (int i = 0; i < arr.length; i++) { if(arr[i]!=i+1) return i+1; } return arr.length+1; } public void swap(int[] arr,int i,int j){ int temp=arr[i]; arr[i]=arr[j]; arr[j]=temp; } }