题目:给你一个未排序的整数数组,请你找出其中没有出现的最小的正整数。
示例 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;
                    }
                }
            }
        }
posted on 2021-01-01 12:51  剑舞红颜笑i  阅读(784)  评论(0)    收藏  举报