【牛客题霸题解】二分查找-I

二分查找-I

http://www.nowcoder.com/practice/d3df40bd23594118b57554129cadf47b

区间[L,R]代表还需要查找的区间。
如果nums[mid] == target,直接返回答案
如果nums[mid] < target,说明mid位置及其前面的都不可能是答案了,让L = mid+1
如果nums[mid] > target,说明mid位置及其后面的位置都不可能是答案了,所以让R=mid-1
c++

class Solution {
public:

    int search(vector<int>& nums, int target) {
        int L,R;
        L = 0;
        R = nums.size()-1;
        int ans = -1;
        while(L <= R)
        {
            int mid = (L+R)/2;
            if(nums[mid] == target)
            {
                return mid;
            }
            else if(nums[mid] > target)
            {
                R = mid-1;
            }
            else
            {
                L = mid+1;
            }
        }
        return -1;
    }
};

java

import java.util.*;


public class Solution {
    public int search (int[] nums, int target) {
        int L,R;
        L = 0;
        R = nums.length-1;
        int ans = -1;
        while(L <= R)
        {
            int mid = (L+R)/2;
            if(nums[mid] == target)
            {
                return mid;
            }
            else if(nums[mid] > target)
            {
                R = mid-1;
            }
            else
            {
                L = mid+1;
            }
        }
        return -1;
    }
}

python

class Solution:
    def search(self , nums , target ):
        L = 0
        R = len(nums)-1
        ans = -1
        while L <= R:
            mid = (L+R)//2;
            if nums[mid] == target:
                return mid
            elif nums[mid] > target:
                R = mid-1
            else:
                L = mid+1
        return -1
牛客题霸题解 文章被收录于专栏

QAQ

全部评论

相关推荐

评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务