【刷题篇】二分查找(二)

news2025/1/23 13:13:55

文章目录

  • 1、山脉数组的峰顶索引
  • 2、寻找峰值
  • 3、寻找旋转排序数组中的最小值
  • 4、LCR 点名

1、山脉数组的峰顶索引

符合下列属性的数组 arr 称为 山脉数组 :
arr.length >= 3
存在 i(0 < i < arr.length - 1)使得:
arr[0] < arr[1] < … arr[i-1] < arr[i]
arr[i] > arr[i+1] > … > arr[arr.length - 1]
给你由整数组成的山脉数组 arr ,返回满足 arr[0] < arr[1] < … arr[i - 1] < arr[i] > arr[i + 1] > … > arr[arr.length - 1] 的下标 i 。
你必须设计并实现时间复杂度为 O(log(n)) 的解决方案。
在这里插入图片描述

class Solution {
public:
    int peakIndexInMountainArray(vector<int>& arr) {
        int n=arr.size();
        int left=0;
        int right=n-1;
        while(left<right)
        {
            int mid=left+(right-left+1)/2;//找右端点要加一的
            if(arr[mid]>=arr[mid-1])
                left=mid;
            else
                right=mid-1;
        }
        return left;
    }
};

2、寻找峰值

峰值元素是指其值严格大于左右相邻值的元素。
给你一个整数数组 nums,找到峰值元素并返回其索引。数组可能包含多个峰值,在这种情况下,返回 任何一个峰值 所在位置即可。
你可以假设 nums[-1] = nums[n] = -∞ 。
你必须实现时间复杂度为 O(log n) 的算法来解决此问题。
在这里插入图片描述

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

3、寻找旋转排序数组中的最小值

已知一个长度为 n 的数组,预先按照升序排列,经由 1 到 n 次 旋转 后,得到输入数组。例如,原数组 nums = [0,1,2,4,5,6,7] 在变化后可能得到:
若旋转 4 次,则可以得到 [4,5,6,7,0,1,2]
若旋转 7 次,则可以得到 [0,1,2,4,5,6,7]
注意,数组 [a[0], a[1], a[2], …, a[n-1]] 旋转一次 的结果为数组 [a[n-1], a[0], a[1], a[2], …, a[n-2]] 。
给你一个元素值 互不相同 的数组 nums ,它原来是一个升序排列的数组,并按上述情形进行了多次旋转。请你找出并返回数组中的 最小元素 。
你必须设计一个时间复杂度为 O(log n) 的算法解决此问题。
在这里插入图片描述
在这里插入图片描述

比较头节点或者尾节点

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

4、LCR 点名

某班级 n 位同学的学号为 0 ~ n-1。点名结果记录于升序数组 records。假定仅有一位同学缺席,请返回他的学号。
在这里插入图片描述

class Solution {
public:///解法:1、哈希表 2、直接变里找结果 3、位运算 4、数学(高斯求和公式)
    int takeAttendance(vector<int>& records) {
        int n=records.size();
        int left=0;
        int right=n-1;
        while(left<right)
        {
            int mid=left+(right-left)/2;
            if(records[mid]>mid)
                right=mid;
            else
                left=mid+1;
        }
        if(records[left]==left)
            return records[n-1]+1;
        return left;
    }
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1681418.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

停车场车位引导系统是什么,停车场车位引导系统有哪些作用?

随着城市交通的快速发展&#xff0c;车辆的数量也在迅速增长&#xff0c;随之而来的就是停车难的问题&#xff0c;那么在城市中&#xff0c;如何合理的利用好现有资源&#xff0c;让停车资源得到合理利用呢&#xff1f;这就需要一套科学有效的智能停车场系统&#xff0c;可以帮…

FreeRTOS【6】线程优先级

1.开发背景 基于上一篇指引&#xff0c;已经了解了线程的阻塞&#xff0c;这个篇章主要介绍线程优先级的影响 2.开发需求 设计实验验证高优先级会抢占低优先级线程 CPU 3.开发环境 window10 MDK STM32F429 FreeRTOS10.3.1 4.实现步骤 1&#xff09;创建测试线程&#xff…

语法分析-文法

如果对于一部文法中&#xff0c;存在至少一个句子有两个或者两个以上的语法树则该文法是二义性的。 我们可以以上面的例子进行解释&#xff0c;对于第棵个语法树&#xff0c;我们可以看到是先进行了加法运算再进行的乘法运算&#xff0c;因为需要先把EE作为整体运算完后再成为E…

MLM之GPT-4o:GPT-4o(多模态/高智能/2倍速/视觉改进/128K的大窗口)的简介、安装和使用方法、案例应用之详细攻略

MLM之GPT-4o&#xff1a;GPT-4o(多模态/高智能/2倍速/视觉改进/128K的大窗口)的简介、安装和使用方法、案例应用之详细攻略 导读&#xff1a;2024年5月13日&#xff0c;OpenAI重磅发布新旗舰模型GPT-4o&#xff0c;这是一个全新的旗舰模型&#xff0c;可以实时跨越音频、视觉和…

【错题集-编程题】主持人调度(一)(排序)

牛客对应题目链接&#xff1a;主持人调度&#xff08;一&#xff09;_牛客题霸_牛客网 (nowcoder.com) 一、分析题目 区间问题技巧&#xff1a;左端点排序或者按照右端点排序。 左端点排序后&#xff0c;仅需考虑后续区间是否能与前⼀个区间重叠即可。 二、代码 1、没看题解之…

javaEE进阶——SpringBoot与SpringMVC第一讲

文章目录 什么是springMVCSpringMVC什么是模型、视图、控制器MVC和SpringMVC的关系SpringMVC的使用第一个SpringMVC程序RestController什么是注解 那么RestController到底是干嘛的呢&#xff1f;RequestMapping 如何接收来自请求中的querystryingRequestParamRequestMapping(&q…

使用Xterm实现终端构建

————html篇———— // 需要使用Xterm Xterm的官网&#xff1a; Xterm.js 新建项目 增加基本文件 下载 框架 npm init -y Xterm依赖 npm install xterm/xterm 参考文档写的代码 贴入代码 <html><head><link rel"stylesheet" href"nod…

[Algorithm][回溯][字母大小写全排列][优美的排列][N皇后]详细讲解

目录 1.字母大小写全排列1.题目链接2.算法原理详解3.代码实现 2.优美的排列1.题目链接2.算法原理详解3.代码实现 3.N 皇后1.题目链接2.算法原理详解3.代码实现 1.字母大小写全排列 1.题目链接 字母大小写全排列 2.算法原理详解 本题逻辑与子集大致相同 思路一&#xff1a;每…

Verdaccio私服搭建

前言 Verdaccio是一个轻量级的私有npm注册表&#xff0c;由Node.js创建&#xff0c;并且是sinopia1.4.0的衍生版本&#xff0c;与其100%向后兼容。Verdaccio的名称来源于意大利中世纪晚期fresco绘画中流行的一种绿色。 Verdaccio的主要功能是在本地环境中管理和共享npm软件包。…

基于区块链的Web 3.0关键技术研讨会顺利召开

基于区块链的Web3.0关键技术研讨会 2024年4月23日&#xff0c;由国家区块链技术创新中心主办的“基于区块链的web3.0关键技术研讨会”召开。Web3.0被用来描述一个运行在“区块链”技术之上的“去中心化”的互联网&#xff0c;该网络上的主体掌握自己数据所有权和使用权&#xf…

减肥健身个人总结

个人一直没有健身运动的习惯&#xff0c;工作久了体重超标&#xff0c;体检报告各种指标也不太“美丽”&#xff0c;开始学习一些减肥健身知识&#xff0c;持续更新。目标是每周减1~2斤&#xff0c;用几个月时间持续到体重恢复正常。 文章目录 一、减脂原理---制造热量缺口控制…

位拆分与运算

描述 题目描述&#xff1a; 现在输入了一个压缩的16位数据&#xff0c;其实际上包含了四个数据[3:0][7:4][11:8][15:12], 现在请按照sel选择输出四个数据的相加结果,并输出valid_out信号&#xff08;在不输出时候拉低&#xff09; 0: 不输出且只有此时的输入有…

LeetCode-2589. 完成所有任务的最少时间【栈 贪心 数组 二分查找 排序】

LeetCode-2589. 完成所有任务的最少时间【栈 贪心 数组 二分查找 排序】 题目描述&#xff1a;解题思路一&#xff1a;贪心暴力解题思路二&#xff1a;栈二分查找解题思路三&#xff1a;简化版 题目描述&#xff1a; 你有一台电脑&#xff0c;它可以 同时 运行无数个任务。给你…

Java面试八股之Collection和Collections的区别

Java中Collection和Collections的区别 Collection 是一个接口&#xff0c;位于 java.util 包中&#xff0c;它是 Java 集合框架的顶层接口之一&#xff0c;代表了一组对象的集合。Collection 接口定义了所有集合类型&#xff08;如 List、Set、Queue 等&#xff09;所共有的基…

electron的Remote模块

03 【electron的Remote模块】 在渲染进程里&#xff08;比如index.html里面加载了一些js文件&#xff0c;那里面的js如果要使用到 BrowserWindow 这些属性的话就必须使用 remote&#xff09; 使用 remote 模块, 你可以调用 main 进程对象的方法 1.electron14.0之前版本使用 …

2024年NOC大赛创客智慧(西瓜创客)图形化复赛编程真题模拟试卷包含答案

NOC 复赛图形化模拟题 【题目要求】 1、添加角色小猫和“Balloon1”角色气球(大小 70) 2、添加背景“Boardwalk” 3、点击绿旗,角色初始位置如图,小猫从舞台左侧出发,向舞台右 侧移动,移动过程中不断切换造型 4、当小猫碰到气球角色,小猫停止移动,气球逐渐向舞台上方…

redis7基础篇2 redis的3种模式(主从,哨兵,集群)模式

一 主从复制模式 1.1 主从模式 主从模式&#xff1a; 主机可以读&#xff0c;写&#xff0c;重机只能写操作。 主机shutdown后&#xff0c;从机上位还是原地待命&#xff1a;从机不动&#xff0c;原地待命&#xff0c;数据正常使用&#xff0c;等待主机重启归来。 主机shu…

华为OD机试 - 山峰个数(Java 2024 C卷 100分)

华为OD机试 2024C卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试&#xff08;JAVA&#xff09;真题&#xff08;A卷B卷C卷&#xff09;》。 刷的越多&#xff0c;抽中的概率越大&#xff0c;每一题都有详细的答题思路、详细的代码注释、样例测试…

指标体系建设方案(36页PPT)

一、资料介绍 《指标体系建设方案》这份36页的PPT资料包&#xff0c;是针对当前组织发展需求而精心设计的一套全面、系统的指标构建方案。本资料包从理论到实践&#xff0c;深入浅出地阐述了指标体系建设的必要性、原则、步骤及实施要点&#xff0c;旨在帮助组织建立起科学、合…

【案例】根据商品的颜色进行分组,同一种颜色的商品可以对应多种尺寸、价格以及库存

效果展示 效果说明 输入商品的颜色、尺寸后点击添加按钮&#xff0c;即可将对应的商品信息添加到下方的表格当中&#xff0c;表格中除了会显示商品的颜色和尺寸之外&#xff0c;还会显示商品的价格和库存&#xff0c;并且可以对商品的价格和库存进行修改&#xff0c;并且根据颜…