Classical Binary Search(Ladder)

Description

Find any position of a target number in a sorted array. Return -1 if target does not exist.

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

Lintcode_ladder

Method

  1. Binary Search
  2. x

Example

  1. 1
    class Solution {
    public:
     /**
      * @param A an integer array sorted in ascending order
      * @param target an integer
      * @return an integer
      */
     int findPosition(vector<int>& nums, int target) {
         // Write your code here
         if (nums.empty()) {
             return -1;
         }
         int start = 0;
         int end = nums.size()-1;
         while (start+1 < end) {
             int mid = start + (end-start)/2;
             if (target == nums[mid]) {
                return mid;
             } else if (target > nums[mid]) {
                 start = mid;
             } else {
                 end = mid;
             }
         }
         if (target == nums[start]) {
             return start;
         }
         if (target == nums[end]) {
             return end;
         }
         return -1;
     }
    };
    

Similar problems

x

Tags

x

results matching ""

    No results matching ""