当前位置: 首页 > article >正文

力扣-数组-34 在排序数组中查找元素的第一个和最后一个位置

思路和时间复杂度

  1. 思路:先找到中间数,如果没找到就返回{-1,-1},如果找到了就以当前节点为中点,向两边扩
  2. 时间复杂度:       O(logn)

代码

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


http://www.kler.cn/a/581103.html

相关文章:

  • 三、Docker 集群管理与应用
  • 如何查看redis的缓存时间
  • 基于Debian12的SVN和Trac自动安装部署脚本
  • [项目]基于FreeRTOS的STM32四轴飞行器: 七.遥控器按键
  • Linux网络 五种 IO 模型
  • 前端开发中的常见设计模式:全面解析与实践
  • gitlab备份到SVN之变更备份服务器
  • 网络DNS怎么更改?
  • TypeScript接口:结构化类型的契约之道
  • 【SpringMVC】深入解析使用 Postman 和浏览器模拟将单个与多个参数传递到后端和后端接收过程
  • 自然语言处理:主题模型
  • tauri程序使用github action发布linux中arm架构
  • 【计算机网络】域名劫持无处遁形:基于HTTPDNS打造可靠且安全的域名解析体系
  • 【HarmonyOS Next】鸿蒙应用弹框和提示气泡详解(一)
  • HTTP拾技杂谈
  • 汽车一键启动按钮更换注意事项
  • 头歌-Junit实训入门篇
  • 2025华晨宇火星演唱会盛大启幕 中西乐交融视听美学再攀高峰
  • LeeCode题库第五十题
  • mac安装java环境