leecode刷题--从二分开始

我是跟着代码随想录刷的题,所以首先是做的二分的题,二分查找的题比较简单,思路比较清晰:

左右指针,对比中间数值,对左右指针进行更改,对比之前写过的,多了一个防止溢出的操作,在算中间值时,使用 mid = left + (right-left)/2;

题目分别为:
leecode 704,35,34,69,367

以 leecode34为例:

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值