[LeetCode] Binary Search 二分搜索法

 

Given a sorted (in ascending order) integer array nums of n elements and a target value, write a function to search target in nums. If target exists, then return its index, otherwise return -1.html


Example 1:spa

Input:  = [-1,0,3,5,9,12],  = 9
Output: 4
Explanation: 9 exists in  and its index is 4

numstargetnums

Example 2:code

Input:  = [-1,0,3,5,9,12],  = 2
Output: -1
Explanation: 2 does not exist in  so return -1
numstargetnums

 

Note:htm

  1. You may assume that all elements in nums are unique.
  2. n will be in the range [1, 10000].
  3. The value of each element in nums will be in the range [-9999, 9999].

 

這道題就是最基本的二分搜索法了,這是博主以前總結的LeetCode Binary Search Summary 二分搜索法小結的四種之中的第一類,也是最簡單的一類,寫法什麼很模版啊,注意right的初始化值,還有while的循環條件,以及right的更新值,這三點不一樣的人可能會有不一樣的寫法,選一種本身最習慣的就好啦,參見代碼以下:blog

 

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

 

相似題目:element

Search in a Sorted Array of Unknown Sizeleetcode

 

參考資料:get

https://leetcode.com/problems/binary-searchit

 

LeetCode All in One 題目講解彙總(持續更新中...)io

相關文章
相關標籤/搜索