zoukankan      html  css  js  c++  java
  • Search for a Range

    Given a sorted array of integers, find the starting and ending position of a given target value.

    Your algorithm's runtime complexity must be in the order of O(log n).

    If the target is not found in the array, return [-1, -1].

    For example,
    Given [5, 7, 7, 8, 8, 10] and target value 8,
    return [3, 4].

    class Solution {
    public:
        vector<int> searchRange(vector<int>& nums, int target) {
            vector<int> res;
            res.push_back(bsarch_left(nums, target));
            res.push_back(bsarch_right(nums, target));
            return res;
        }
    
        int bsarch_left(vector<int>& nums, int target) {
            int i = 0;
            int j = nums.size() - 1;
            while (i < j) {
                int mid = i + (j-i) / 2;
                if (nums[mid] < target) {
                    i = mid + 1;
                } else {
                    j = mid;
                }
            }
    
            if (target == nums[i]) {
                return i;
            }
            else {
                return -1;
            }
        }
    
        int bsarch_right(vector<int>& nums, int target) {
            int i = 0;
            int j = nums.size() - 1;
            while (i < j) {
                int mid = i + (j-i + 1) / 2;
                if (nums[mid] <= target) {
                    i = mid;
                } else {
                    j = mid - 1;
                }
            }
    
            if (target == nums[i]) {
                return i;
            }
            else {
                return -1;
            }
        }
    };
  • 相关阅读:
    两台虚拟机(不同电脑)通信
    虚拟机使用网络助手
    strcpy_s
    线程创建几种方法
    JavaWeb——EL详解
    JavaWeb_EL语法
    JavaWeb_JavaBean
    JavaWeb_HttpSession之验证码
    JavaWeb_HttpSession之表单的重复提交
    JavaWeb——相对路径和绝对路径
  • 原文地址:https://www.cnblogs.com/SpeakSoftlyLove/p/5184624.html
Copyright © 2011-2022 走看看