sudopower

LC: 704: Binary Search

lc_704

Link to problem

Solution 2 – iterative

func search(arr []int, target int) int {
    var start, end, mid int
	end = len(arr) - 1
	mid = len(arr) / 2

	for start <= end {		
		if arr[mid] == target {
			return mid
		}
		
		if arr[mid] < target{
			start = mid + 1
		} else {
			end = (mid - 1)
		}
		mid = start + (end-start)/2
	}

	return -1
}

Solution 1 – Recursive

func search(arr []int, target int) int {                    
    return searchRecursive(arr,target,0,len(arr)-1)	
}

func searchRecursive(arr []int, target, start, end int) int {
    if start>end{
        return -1
    }
    mid := start + (end-start)/2
    if arr[mid] == target {
        return mid
    }
    
    if arr[mid] < target{
        return searchRecursive(arr,target,mid+1,end)
    } else {
        return searchRecursive(arr,target,start,mid-1)
    }

    return -1
}

Leave a Reply

Your email address will not be published. Required fields are marked *