算法训练营第一期 | 在排序数组中查找元素的第一个和最后一个位置

本文内容为算法训练营一期内容,仅限训练营学员观看。

隐藏内容
  • 普通用户购买价格:不可购买
  • 会员用户购买价格:999积分
  • 永久会员用户购买价格:免费推荐

发表评论

邮箱地址不会被公开。 必填项已用*标注

评论(1)

  • 在下振予 永久会员 2021年11月29日 下午7:31

    分享c++代码
    class Solution {
    public:
    vector searchRange(vector& nums, int target) {
    vector where;
    where.push_back(-1);
    where.push_back(-1);
    int length = nums.size();
    int left = 0;
    int right = length – 1;
    int mid;
    while(left <= right){ // 先找左边开始位置
    mid = (left + right) / 2;
    if(target == nums[mid]){ // 如果此时mid位置为target
    if(mid == 0 || nums[mid – 1] < target) // 找到了开始位置
    where[0] = mid;
    right = mid – 1; // 否则继续往左边找
    }else if(nums[mid] < target) // 说明target只能出现在右边
    left = mid + 1;
    else // 否则target只能出现在左边
    right = mid – 1;
    }

    left = 0; // 重新初始化左右边界
    right = length – 1;
    while(left target) // 找到了结束位置
    where[1] = mid;
    left = mid + 1; // 否则继续往右边找
    }else if(nums[mid] < target) // 说明target只能出现在右边
    left = mid + 1;
    else // 否则target只能出现在左边
    right = mid – 1;
    }
    return where;
    }
    };