给定一个无重复元素的整数数组nums,请你找出其中没有出现的最小的正整数
进阶: 空间复杂度 ,时间复杂度
数据范围:
public int minNumberDisappeared (int[] nums) { // write code here if (nums == null || nums.length == 0) return -1; Arrays.sort(nums); int min = 1; for (int i = 0; i < nums.length; i++) { if (nums[i] < 1) { continue; } else if (nums[i] == min) { min++; continue; } } return min; }
public int minNumberDisappeared (int[] nums) { // write code here Arrays.sort(nums); int res=1; for(int i=0;i<nums.length;i++){ if(nums[i]<=0){ continue; } if(res!=nums[i]){ return res; }else{ res++; } } return res; }
import java.util.*; import java.util.stream.Collectors; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param nums int整型一维数组 * @return int整型 */ public int minNumberDisappeared (int[] nums) { List<Integer> collect = Arrays.stream(nums).boxed() .filter(item -> item > 0) .sorted(Comparator.naturalOrder()) .collect(Collectors.toList()); boolean isFirst = true; if (collect.size() == 0) { return 1; } else if (collect.size() == 1) { return (collect.get(0) != 1) ? 1 : 2; } for (int i = 0; i < collect.size() - 1; i++) { int val1 = collect.get(i); int val2 = collect.get(i + 1); if (isFirst && val1 > 1) return 1; if (val2 - val1 > 1) return val1 + 1; isFirst = false; if (i == collect.size() - 2) return val2 + 1; } return 1; } }
import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param nums int整型一维数组 * @return int整型 */ public int minNumberDisappeared (int[] nums) { // 1. 参数校验 if (nums == null || nums.length == 0) { return -1; } // 2. 对数组进行排序 Arrays.sort(nums); // 3. 创建 ans 表示缺失的第一个正数 // 初始化成 1 int ans = 1; // 4. 遍历数组 for (int x : nums) { // 如果当前元素 == res,那就代表当前正整数出现过 if (x == ans) { ans++; } } // 5. 最后返回 ans 的值 return ans; } }
public int minNumberDisappeared (int[] nums) { // 缺失的 最小 正 正数 所以最小的结果只可能是1 //先存入Map, //再遍历Map if(nums==null||nums.length==0) return -1; Map<Integer,Integer> map=new HashMap<>(); for(int i=0;i<nums.length;i++){ map.put(nums[i],1);//map存的 k-number[i] v-1 } int ans=1; for(int i=0;i<map.size();i++){//遍历map if(map.containsKey(ans)){//这里的containsKey(ans) 括号中是ans ans++; } } return ans; }
import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param nums int整型一维数组 * @return int整型 */ public int minNumberDisappeared (int[] nums) { int i = 0; int j = 0; while (i < nums.length && j < nums.length) { if (nums[j] == i + 1) { //找到了当前位置下的数字 swap(nums, i, j); ++i; j = i; } else { ++j; } } return i + 1; } void swap(int[] nums, int a, int b) { int tmp = nums[a]; nums[a] = nums[b]; nums[b] = tmp; } }
public int minNumberDisappeared (int[] nums) { int temp = 0; ArrayList<Integer> arr = new ArrayList<>(); for(int i=0;i<nums.length;i++){ arr.add(nums[i]); } Collections.sort(arr); for(int i=0;i<arr.size();i++){ if(arr.get(i) == temp+1){ temp = arr.get(i); } } return temp+1; }
import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param nums int整型一维数组 * @return int整型 */ public int minNumberDisappeared (int[] nums) { // write code here HashMap<Integer,Integer> map=new HashMap<>(); for(int i=0;i<nums.length;i++){ map.put(nums[i],1);//用hashMap存储nums中的元素 } int res=1; for(int i=0;i<map.size();i++){ if(map.containsKey(res)){ res++;//如果res都存在与map的key中,则1到res的值都存在,返回res+1即可,如果第一次不存在于hashMap中,则返回第一次的res值 } } return res; } }
public int minNumberDisappeared (int[] nums) { Arrays.sort(nums); for(int i=1;i<nums.length+2;i++){ int a = Arrays.binarySearch(nums,i); if(a<0){ return i; } } return 0; } 太简单了,不会有人不会吧
import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param nums int整型一维数组 * @return int整型 */ public int minNumberDisappeared (int[] nums) { // write code here Arrays.sort(nums); int length=nums.length; int max=nums[length-1]; int min=nums[0]; if(min>1||max<1)return 1; for(int index=0;index<length;index++){ if(index==length-1){ return nums[index]+1; }else if(nums[index+1]-nums[index]>1){ for(int tmp=nums[index]+1;tmp<nums[index+1];tmp++){ if(tmp>0){ return tmp; } } } } return -1; } }
import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param nums int整型一维数组 * @return int整型 */ public int minNumberDisappeared (int[] nums) { // write code here List<Integer> list=new ArrayList<Integer>(); for(int i=0;i<=nums.length-1;i++){ list.add(nums[i]); } Collections.sort(list); int k=-1; for(int i=0;i<=nums.length-1;i++){ if(list.get(i)>0){ k=i; break; } } if(k==-1){return 1;}//即其中无正数 else if(list.get(k)>1){return 1;}//即第一个正数不是1 else{//即第一个正数是1 while(k!=nums.length-1&&(list.get(k+1)==list.get(k)+1||list.get(k+1)==list.get(k))){ k++; } return list.get(k)+1; } } }