package com.app.main.LeetCode;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
/**
* 268
*
* easy
*
* https://leetcode.com/problems/missing-number/
*
* Given an array containing n distinct numbers taken from 0, 1, 2, ..., n, find the one that is missing from the array.
*
* Example 1:
*
* Input: [3,0,1]
* Output: 2
* Example 2:
*
* Input: [9,6,4,2,3,5,7,0,1]
* Output: 8
* Created with IDEA
* author:Dingsheng Huang
* Date:2019/10/5
* Time:下午9:45
*/
public class MissingNumber {
public int missingNumber(int[] nums) {
Arrays.sort(nums);
if (nums.length == 1) {
if (nums[0] <= 1) {
return 1;
}
return nums[0] + 1;
}
for (int i = 0; i < nums.length - 1; i++) {
if ((nums[i] + 1)!= nums[i + 1]) {
return nums[i] + 1;
}
}
return 0;
}
public int missingNumber2(int[] nums) {
Set<Integer> set = new HashSet<>();
for (Integer i : nums) {
set.add(i);
}
int tail = nums.length + 1;
for (int j = 0; j < tail; j++) {
if (!set.contains(j)) {
return j;
}
}
return -1;
}
public int missingNumber3(int[] nums) {
Arrays.sort(nums);
for (int i = 0; i < nums.length; i++) {
if (i != nums[i]) {
return i;
}
}
return nums[nums.length - 1] + 1;
}
public int missingNumber4(int[] nums) {
int n = nums.length;
int targetSum = (n + 1) * n / 2;
int currSum = 0;
for (int i : nums) {
currSum += i;
}
return targetSum - currSum;
}
}