Skip to content

Latest commit

 

History

History
77 lines (61 loc) · 1.74 KB

i14.First_Position_of_Target.md

File metadata and controls

77 lines (61 loc) · 1.74 KB

Description

https://www.lintcode.com/problem/first-position-of-target/description

For a given sorted array (ascending order) and a target number, find the first index of this number in O(log n) time complexity.

If the target number does not exist in the array, return -1.

Example

Example 1:
	Input:  [1,4,4,5,7,7,8,9,9,10],1
	Output: 0
	
	Explanation: 
	the first index of  1 is 0.

Example 2:
	Input: [1, 2, 3, 3, 4, 5, 10],3
	Output: 2
	
	Explanation: 
	the first index of 3 is 2.

Example 3:
	Input: [1, 2, 3, 3, 4, 5, 10],6
	Output: -1
	
	Explanation: 
	Not exist 6 in array.

Challenge If the count of numbers is bigger than 2^32, can your code work properly?

Related Problems

    1. Closest Number in Sorted Array
    1. Last Position of Target
    1. Classical Binary Search
    1. Search in a Big Sorted Array
    1. Unique Binary Search Trees
    1. Sqrt(x)
    1. Search Range in Binary Search Tree
from typing import (
    List,
)

class Solution:
    """
    @param nums: The integer array.
    @param target: Target to find.
    @return: The first position of target. Position starts from 0.
    """
    def binary_search(self, nums: List[int], target: int) -> int:
        # write your code here
        if not nums:
            return -1

        start, end = 0, len(nums) - 1
        while start + 1 < end:
            mid = start + (end - start) // 2
            if nums[mid] == target:
                end = mid
            elif nums[mid] > target:
                end = mid
            else:
                start = mid
        if nums[start] == target:
            return start
        if nums[end] == target:
            return end
        return -1