题目:给你一个未排序的整数数组,请你找出其中没有出现的最小的正整数。
示例 1:
输入: [1,2,0]
输出: 3
输入: [3,4,-1,1]
输出: 2
输入: [7,8,9,11,12]
输出: 1
public static void main(String[] args) {
int []arr={5,-3,7,5,9,1,13,2,3,4};
//特殊情况特殊处理
if(arr.length==0||arr==null){
System.out.println(1);
}
else if(arr.length==1&&(arr[0]<=0||arr[0]>1)){
System.out.println(1); }
else {
//调用方法,传入目标数组
firstMissingPositive(arr);
}
}
public static void firstMissingPositive(int[] nums) {
//将数组中的元素添加到集合,只留正数
List<Integer>list=new ArrayList<>();
for (int num : nums) {
if (num>0){
list.add(num);
}
}
//调用工具类Collection里的sort方法,对集合进行升序排序
Collections.sort(list);
if (!list.contains(1)){
System.out.println(1);
}else {
for (Integer integer : list) {
//如果集合里存在一个数 它加一后的数不在集合里,那么这个数加一就是我们要找的最小正整数;
//如果在集合里,那么就不是,继续遍历集合 找到需要的那个数
if(!list.contains(integer+1)){
System.out.println(integer+1);
break;
}
}
}
}
浙公网安备 33010602011771号