|
|
@ -8,29 +8,34 @@
|
|
|
|
package main
|
|
|
|
package main
|
|
|
|
|
|
|
|
|
|
|
|
import "fmt"
|
|
|
|
import "fmt"
|
|
|
|
|
|
|
|
import "os"
|
|
|
|
|
|
|
|
|
|
|
|
func findFirstMissing (arr []int, start, end int) int {
|
|
|
|
func findFirstMissing(arr []int, start, end int) int {
|
|
|
|
|
|
|
|
if start < 0 {
|
|
|
|
|
|
|
|
fmt.Println("Start must be greater than 0")
|
|
|
|
|
|
|
|
os.Exit(1)
|
|
|
|
|
|
|
|
return 0
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if(start > end) {
|
|
|
|
if start > end {
|
|
|
|
return end + 1
|
|
|
|
return end + 1
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if(start != arr[start]) {
|
|
|
|
if start != arr[start] {
|
|
|
|
return start
|
|
|
|
return start
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
mid := (start + end) / 2
|
|
|
|
mid := (start + end) / 2
|
|
|
|
|
|
|
|
|
|
|
|
if(arr[mid] == mid){
|
|
|
|
if arr[mid] == mid {
|
|
|
|
return findFirstMissing(arr, mid + 1, end)
|
|
|
|
return findFirstMissing(arr, mid+1, end)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return findFirstMissing(arr, start, end)
|
|
|
|
return findFirstMissing(arr, start, end)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
func main() {
|
|
|
|
func main() {
|
|
|
|
arr := []int{0, 1, 2, 3, 4, 5, 6, 7, 10}
|
|
|
|
arr := []int{0, 1, 2, 3, 4, 5, 6, 7, 10}
|
|
|
|
var n int = len(arr)
|
|
|
|
var n int = len(arr)
|
|
|
|
fmt.Printf("Smallest missing element is %d", findFirstMissing(arr, 0, n - 1))
|
|
|
|
fmt.Printf("Smallest missing element is %d", findFirstMissing(arr, 0, n-1))
|
|
|
|
}
|
|
|
|
}
|