面试题53 - II. 0~n-1中缺失的数字

image.png

  1. package main
  2. import "fmt"
  3. func missingNumber1(nums []int) int {
  4. for i:=1;i<len(nums);i++{
  5. if nums[i]-nums[i-1]!=1{
  6. return nums[i-1]+1
  7. }
  8. }
  9. if nums[0]!=0{
  10. return 0
  11. }
  12. return nums[len(nums)-1]+1
  13. }
  14. func missingNumber(nums []int) int {
  15. left :=0
  16. right :=len(nums)
  17. for left<right{
  18. mid := left+(right-left)>>1
  19. if nums[mid]==mid{
  20. left = mid+1
  21. }else {
  22. right = mid
  23. }
  24. }
  25. return left
  26. }
  27. func main() {
  28. fmt.Println(missingNumber([]int{0}))//1
  29. fmt.Println(missingNumber([]int{1}))//0
  30. fmt.Println(missingNumber([]int{0,1}))//2
  31. fmt.Println(missingNumber([]int{0,1,3}))//2
  32. fmt.Println(missingNumber([]int{0,1,2,3,4,5,6,7,9}))//8
  33. }