457. Classical Binary Search

Description
Find any position of a target number in a sorted array. Return -1 if target does not exist.
Have you met this question in a real interview? Yes
Example
Given [1, 2, 2, 4, 5, 5].

For target = 2, return 1 or 2.

For target = 5, return 4 or 5.

For target = 6, return -1.
Challenge
O(logn) time

class Solution:
    """
    @param: nums: An integer array sorted in ascending order
    @param: target: An integer
    @return: An integer
    """
    def findPosition(self, nums, target):
        # write your code here
        if not nums:
            return -1
        start = 0
        end = len(nums) -1
        while (start + 1) < end:
            mid = start + (end - start)//2
            if nums[mid] == target:
                # find the last position
                end = mid
            if nums[mid] < target:
                start = mid
            else:
                end = mid
        if nums[end] == target:
            return end;
        if nums[start] ==target:
            return start
        else:
            return -1

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • pyspark.sql模块 模块上下文 Spark SQL和DataFrames的重要类: pyspark.sql...
    mpro阅读 13,143评论 0 13
  • mean to add the formatted="false" attribute?.[ 46% 47325/...
    ProZoom阅读 7,593评论 0 3
  • “第一次打开游戏请允许“使用数据”,否则游戏无法正常运行。” 终极豪华版大家来找茬游戏! 这是一款经典的找不同游戏...
    旬日阅读 3,349评论 0 1
  • 成本会计费用常见的26种会计做账手法,让你做账不再烦恼,能帮助你完成工作。 1基本建设领用材料,计入产品生产成本 ...
    李辉_0468阅读 3,621评论 0 4
  • 每每有人问起喝普洱茶多久了,“快两年了吧”,然后人家就会自然而然地以为我对普洱茶的了解应该是比较多的。而我,...
    语笑嫣然勰阅读 1,605评论 0 1