human
Count 1 's in a sorted binary array | Returns counts of 1 's in arr[low..high]. The array is assumed to be sorted in non-increasing order.
get the middle index.
check if the element at middle index is last 1.
If element is not last 1 , recur for right side.
else recur for left side.
Driver Code"
How can the above be solved in Python?
assistant
#Here is code to count 1 's in a sorted binary array and the other steps required.
 def countOnes ( arr , low , high ) :
	if high >= low :
		mid = low + ( high - low ) // 2
		if ( ( mid == high or arr [ mid + 1 ] == 0 ) and ( arr [ mid ] == 1 ) ) :
			return mid + 1
		if arr [ mid ] == 1 :
			return countOnes ( arr , ( mid + 1 ) , high )
		return countOnes ( arr , low , mid - 1 )
	return 0
arr = [ 1 , 1 , 1 , 1 , 0 , 0 , 0 ]
print ( " Count ▁ of ▁ 1 ' s ▁ in ▁ given ▁ array ▁ is " , countOnes ( arr , 0 , len ( arr ) - 1 ) )