An array contains all the integers from 0 to n, except for one number which is missing. Write code to find the missing integer. Can you do it in O(n) time?
Note: This problem is slightly different from the original one the book.
Example 1:
Input: [3,0,1]
Output: 2
Example 2:
Input: [9,6,4,2,3,5,7,0,1]
Output: 8
Ideas of solving a problem
First of all, when there’s only one digit in the array, if it’s 0, then the missing number is 1, or if it’s 1, then the missing number is 0. We arrange the array in order once, and walk through the relationship between each number and the next. If appear nums [i] + 1!=num[i+1], then we just need to return the value of num[I]+1. Of course this is under the condition that the missing number is not zero. If the missing number is 0, 0 is returned. If zero to the last digit is not missing, return the last digit plus 1. The time complexity is O(n), and the space complexity is O(1).
Code
package main
import (
"fmt"
"sort"
)
func main() {
arr:= [] int {0,1,2,3}
ans:=missingNumber(arr)
fmt.Println(ans)
}
func missingNumber(nums []int) int{
sort.Ints(nums)
value:=0
if len(nums)==1 {
if nums[0]==1 {
return 0
}
return 1
}
for i:=0;i<len(nums)-1;i++ {
if nums[i]+1==nums[i+1] {
if nums[0]!=0 {
return 0
}
value=nums[i+1]+1
continue
}
value=nums[i]+1
break
}
return value
}
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/missing-number-lcci