1. 程式人生 > >Leetcode704.Binary Search二分查詢

Leetcode704.Binary Search二分查詢

給定一個 n 個元素有序的(升序)整型陣列 nums 和一個目標值 target  ,寫一個函式搜尋 nums 中的 target,如果目標值存在返回下標,否則返回 -1。

 

示例 1:

輸入: nums = [-1,0,3,5,9,12], target = 9 輸出: 4 解釋: 9 出現在 nums 中並且下標為 4

示例 2:

輸入: nums = [-1,0,3,5,9,12], target = 2 輸出: -1 解釋: 2 不存在 nums 中因此返回 -1

 

提示:

  1. 你可以假設 nums 中的所有元素是不重複的。
  2. n 將在 [1, 10000]之間。
  3. nums 的每個元素都將在 [-9999, 9999]之間。

 

 

class Solution {
public:
    int search(vector<int>& nums, int target) {
        int high = nums.size() - 1;
        int low = 0;
        while(low <= high)
        {
            int mid = (low + high) / 2;
            if(nums[mid] == target)
            {
                return mid;
            }
            else if(nums[mid] < target)
            {
                 low = mid + 1;
            }
            else
            {
                high = mid - 1;
            }
        }
        return -1;
    }
};