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

力扣hot100——二分查找

35. 搜索插入位置

class Solution {
public:int searchInsert(vector<int>& a, int x) {if (a[0] > x) return 0;int l = 0, r = a.size() - 1;while (l < r) {int mid = (l + r + 1) / 2;if (a[mid] <= x) l = mid;else r = mid - 1;}if (a[l] == x) return l;else return l + 1;}
};

74. 搜索二维矩阵

class Solution {
public:bool searchMatrix(vector<vector<int>>& a, int target) {int n = a.size(), m = a[0].size();int l = 0, r = n * m - 1;int ans = 0;if (a[0][0] == target) ans = 1;auto check = [&](int x) -> bool {int i = x / m, j = x % m;if (a[i][j] == target) ans = 1;return a[i][j] <= target;};while (l < r) {int mid = (l + r + 1) / 2;if (check(mid)) l = mid;else r = mid - 1;}return ans;}
};

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

class Solution {
public:vector<int> searchRange(vector<int>& a, int target) {if (!a.size()) return { -1, -1 };int n = a.size();int l = 0, r = n - 1;vector<int> ans;while (l < r) {int mid = (l + r) / 2;if (a[mid] >= target) r = mid;else l = mid + 1;}if (a[l] == target) ans.push_back(l);l = 0, r = n - 1;while (l < r) {int mid = (l + r + 1) / 2;if (a[mid] <= target) l = mid;else r = mid - 1;}if (a[l] == target) ans.push_back(l);if (!ans.size()) return { -1, -1 };return ans;}
};    

33. 搜索旋转排序数组

class Solution {
public:int search(vector<int>& a, int target) {int n = a.size();if (target >= a[0]) {int l = 0, r = n - 1;while (l < r) {int mid = (l + r + 1) / 2;if (a[mid] <= target && a[mid] >= a[0]) l = mid;else r = mid - 1;}if (a[l] == target) {return l;}return -1;}else {int l = 0, r = n - 1;while (l < r) {int mid = (l + r + 1) / 2;if ((a[mid] <= target && a[mid] < a[0]) || a[mid] >= a[0]) l = mid;else r = mid - 1;}if (a[l] == target) {return l;}return -1;}}
};

二分,分类讨论,知道哪些情况需要缩小l或者r的范围 

153. 寻找旋转排序数组中的最小值

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

1、讨论整个数组单调的情况
2、讨论有分段的情况,找到 < a[0]的第一个下标即可

 4. 寻找两个正序数组的中位数

class Solution {
public:double findMedianSortedArrays(vector<int>& a1, vector<int>& a2) {int n = a1.size() + a2.size();/*数组a1的前i个位置已经处理完,数组a2的前j个位置已经处理完,查找两数组后面部分的第k大*/auto find = [&](this auto&& find, vector<int>& a1, int i, vector<int>& a2, int j, int k)-> int {if (a1.size() - i > a2.size() - j) return find(a2, j, a1, i, k);/*a1不用找了*/if (i == a1.size()) return a2[j + k - 1];/*a1_{i + 1 - 1}, a2_{j + 1 - 1}*/if (k == 1) return min(a1[i], a2[j]);int idx1 = min((int)a1.size(), i + k / 2), idx2 = j + k - k / 2; // 减法避免整数溢出if (a1[idx1 - 1] < a2[idx2 - 1]) {return find(a1, idx1, a2, j, k - (idx1 - i));}elsereturn find(a1, i, a2, idx2, k - (idx2 - j));/*else if (a1[idx1 - 1] > a2[idx2 - 1]) {return find(a1, i, a2, idx2, k - (idx2 - j));}elsereturn a[idx1 - 1];};这么写,细节错误:原因是idx1可能为n,这样a2还没找完比如a1 = [3], a2 = [1, 2, 3, 4, 5]k = 6, idx1 = 1, idx2 = 3实际上第6大是5*/};if (n % 2 == 0) {return (find(a1, 0, a2, 0, n / 2) + find(a1, 0, a2, 0, n / 2 + 1) + 0.0) / 2;}else {return find(a1, 0, a2, 0, n / 2 + 1);}}
};

二分查找,每次每个数组分k/2(k表示第k大),这样缩小数组的范围和k的范围

相关文章:

力扣hot100——二分查找

35. 搜索插入位置 class Solution { public:int searchInsert(vector<int>& a, int x) {if (a[0] > x) return 0;int l 0, r a.size() - 1;while (l < r) {int mid (l r 1) / 2;if (a[mid] < x) l mid;else r mid - 1;}if (a[l] x) return l;else …...

PHP 使用集合 处理复杂数据 提升开发效率

在 PHP 中&#xff0c;集合&#xff08;Collections&#xff09;通常是通过数组或专门的集合类来实现的。 集合&#xff08;Collection&#xff09;是一种高级的数据结构&#xff0c;可以提供比普通数组更强大的操作和功能&#xff0c;特别是当你需要更复杂的数据处理时。 La…...

Unity 对Sprite或者UI使用模板测试扣洞

新建两个材质球&#xff1a; 选择如下材质 设置如下参数&#xff1a; 扣洞图片或者扣洞UI的材质球 Sprite或者UI的材质球 新建一个单独Hole的canvas&#xff0c;将SortOrder设置为0&#xff0c;并将原UI的canvans的SortOrder设置为1 对2DSprite则需要调整下方的参数 hole的O…...

unity学习3:如何从github下载开源的unity项目

目录 1 网上别人提供的一些github的unity项目 2 如何下载github上的开源项目呢&#xff1f; 2.1.0 下载工具 2.1.1 下载方法1 2.1.2 下载方法2&#xff08;适合内部项目&#xff09; 2.1.3 第1个项目 和第4项目 的比较 第1个项目 第2个项目 第3个项目 2.1.4 下载方法…...

PHP后执行php.exe -v命令报错并给出解决方案

文章目录 一、执行php.exe -v命令报错解决方案 一、执行php.exe -v命令报错 -PHP Warning: ‘C:\windows\SYSTEM32\VCRUNTIME140.dll’ 14.38 is not compatible with this PHP build linked with 14.41 in Unknown on line 0 解决方案 当使用PHP8.4.1时遇到VCRUNTIME140.dll…...

CDP集群安全指南-动态数据加密

[〇]关于本文 集群的动态数据加密主要指的是加密通过网络协议传输的数据&#xff0c;防止数据在传输的过程中被窃取。由于大数据涉及的主机及服务众多。你需要更具集群的实际环境来评估需要为哪些环节实施动态加密。 这里介绍一种通过Cloudera Manager 的Auto-TLS功能来为整个…...

【shell编程】报错信息:Undefined Variable(包含6种解决方法)

大家好&#xff0c;我是摇光~ 当Shell脚本报错“Undefined Variable”时&#xff0c;是未定义变量的意思。 以下是对每个可能原因及其对应详细解决方案的详细解释&#xff1a; 原因1&#xff1a;拼写错误 原因&#xff1a; 脚本中变量名的拼写在使用和定义时不一致。例如&…...

Dubbo扩展点加载机制

加载机制中已经存在的一些关键注解&#xff0c;如SPI、©Adaptive> ©Activateo然后介绍整个加载机制中最核心的ExtensionLoader的工作流程及实现原理。最后介绍扩展中使用的类动态编译的实 现原理。 Java SPI Java 5 中的服务提供商https://docs.oracle.com/jav…...

unity学习7:unity的3D项目的基本操作: 坐标系

目录 学习参考 1 unity的坐标系 1.1 左手坐标系 1.2 左手坐标系和右手坐标系的区别 1.3 坐标系的原点(0,0,0) 2 坐标系下的具体xyz坐标 2.1 position这里的具体xyz坐标值 2.2 父坐标 2.3 世界坐标和相对坐标 2.3.1 世界坐标 2.3.2 相对坐标 2.4 父物体&#xff0c;…...

PyTorch框架——基于深度学习EfficientDeRain神经网络AI去雨滴图像增强系统

第一步&#xff1a;EfficientDeRain介绍 EfficientDeRain 是一个针对单张图像去雨的开源项目&#xff0c;该项目由清华大学的研究团队提出&#xff0c;主要用于处理图像中的雨水干扰&#xff0c;恢复图像的真实场景 核心功能 图像去雨&#xff1a;EfficientDeRain 通过学习像素…...

写一个类模板三个模板参数K,V,M,参数是函数(函数参数、lambda传参、函数指针)

cal是类的成员函数。cal的3个入参是func1(K&#xff09;&#xff0c;func2&#xff08;K&#xff0c;V&#xff09;&#xff0c;func3(K&#xff0c;V&#xff0c;M)&#xff0c;请写出cal&#xff0c;并在main函数中调用cal 在您给出的要求中&#xff0c;cal成员函数并不直接…...

国内Ubuntu环境Docker部署Stable Diffusion入坑记录

国内Ubuntu环境Docker部署Stable Diffusion入坑记录 本文旨在记录使用dockerpython进行部署 stable-diffusion-webui 项目时遇到的一些问题&#xff0c;以及解决方案&#xff0c;原项目地址: https://github.com/AUTOMATIC1111/stable-diffusion-webui 问题一览&#xff1a; …...

现代光学基础6

总结自老师的ppt yt6 半导体激光器开卷考试学习资料 目录 半导体激光器边发射半导体激光器垂直腔面发射激光器&#xff08;VCSEL&#xff09;激光产生条件&#xff08;激光原理&#xff09;半导体激光器的水容器模型有源半导体区域类型和载流子注入发光二极管&#xff08;L…...

解决HBuilderX报错:未安装内置终端插件,是否下载?或使用外部命令行打开。

版权声明 本文原创作者&#xff1a;谷哥的小弟作者博客地址&#xff1a;http://blog.csdn.net/lfdfhl 错误描述 在HBuilderX中执行npm run build总是提醒下载插件&#xff1b;图示如下&#xff1a; 但是&#xff0c;下载总是失败。运行项目时候依然弹出上述提醒。 解决方案 …...

基于Java的超级玛丽游戏的设计与实现【源码+文档+部署讲解】

目 录 1、绪论 1.1背景以及现状 1.2 Java语言的特点 1.3 系统运行环境及开发软件&#xff1a; 1.4 可行性的分析 1.4.1 技术可行性 1.4.2 经济可行性 1.4.3 操作可行性 2、 需求分析 2.1 用户需求分析 2.2功能需求分析 2.3界面设计需求分析…...

Spring Boot项目中使用单一动态SQL方法可能带来的问题

1. 查询计划缓存的影响 深入分析 数据库系统通常会对常量SQL语句进行编译并缓存其执行计划以提高性能。对于动态生成的SQL语句&#xff0c;由于每次构建的SQL字符串可能不同&#xff0c;这会导致查询计划无法被有效利用&#xff0c;从而需要重新解析、优化和编译&#xff0c;…...

conan从sourceforge.net下载软件失败

从sourceforge.net下载软件&#xff0c;经常会没有开始下载就返回了。 原因是&#xff1a; 自动选择的镜像站不能打开。 在浏览器中&#xff0c;我们可以手动选择站点尝试&#xff0c;但是conan就不行了。 手动选择一个站点&#xff0c;能够有文件保存窗口弹出&#xff0c;之后…...

通过爬虫方式实现视频号助手发布视频

1、将真实的cookie贴到解压后目录中cookie.txt文件里,修改python代码里的user_agent和video_path, cover_path等变量的值,最后运行python脚本即可; 2、运行之前根据import提示安装一些常见依赖,比如requests等; 3、2025年1月份最新版; 代码如下: import json import…...

springboot525基于MVC框架自习室管理和预约系统设计与实现(论文+源码)_kaic

摘 要 传统办法管理信息首先需要花费的时间比较多&#xff0c;其次数据出错率比较高&#xff0c;而且对错误的数据进行更改也比较困难&#xff0c;最后&#xff0c;检索数据费事费力。因此&#xff0c;在计算机上安装自习室管理和预约系统软件来发挥其高效地信息处理的作用&am…...

“大数据+职业本科”:VR虚拟仿真实训室的发展前景

在新时代背景下&#xff0c;随着科技的飞速进步和产业结构的不断升级&#xff0c;职业教育正迎来前所未有的变革。“大数据职业本科”的新型教育模式&#xff0c;结合VR&#xff08;虚拟现实&#xff09;技术的广泛应用&#xff0c;为实训教学开辟了崭新的道路&#xff0c;尤其…...

谷歌浏览器插件

项目中有时候会用到插件 sync-cookie-extension1.0.0&#xff1a;开发环境同步测试 cookie 至 localhost&#xff0c;便于本地请求服务携带 cookie 参考地址&#xff1a;https://juejin.cn/post/7139354571712757767 里面有源码下载下来&#xff0c;加在到扩展即可使用FeHelp…...

基于FPGA的PID算法学习———实现PID比例控制算法

基于FPGA的PID算法学习 前言一、PID算法分析二、PID仿真分析1. PID代码2.PI代码3.P代码4.顶层5.测试文件6.仿真波形 总结 前言 学习内容&#xff1a;参考网站&#xff1a; PID算法控制 PID即&#xff1a;Proportional&#xff08;比例&#xff09;、Integral&#xff08;积分&…...

突破不可导策略的训练难题:零阶优化与强化学习的深度嵌合

强化学习&#xff08;Reinforcement Learning, RL&#xff09;是工业领域智能控制的重要方法。它的基本原理是将最优控制问题建模为马尔可夫决策过程&#xff0c;然后使用强化学习的Actor-Critic机制&#xff08;中文译作“知行互动”机制&#xff09;&#xff0c;逐步迭代求解…...

MySQL 隔离级别:脏读、幻读及不可重复读的原理与示例

一、MySQL 隔离级别 MySQL 提供了四种隔离级别,用于控制事务之间的并发访问以及数据的可见性,不同隔离级别对脏读、幻读、不可重复读这几种并发数据问题有着不同的处理方式,具体如下: 隔离级别脏读不可重复读幻读性能特点及锁机制读未提交(READ UNCOMMITTED)允许出现允许…...

AtCoder 第409​场初级竞赛 A~E题解

A Conflict 【题目链接】 原题链接&#xff1a;A - Conflict 【考点】 枚举 【题目大意】 找到是否有两人都想要的物品。 【解析】 遍历两端字符串&#xff0c;只有在同时为 o 时输出 Yes 并结束程序&#xff0c;否则输出 No。 【难度】 GESP三级 【代码参考】 #i…...

Linux简单的操作

ls ls 查看当前目录 ll 查看详细内容 ls -a 查看所有的内容 ls --help 查看方法文档 pwd pwd 查看当前路径 cd cd 转路径 cd .. 转上一级路径 cd 名 转换路径 …...

HTML 列表、表格、表单

1 列表标签 作用&#xff1a;布局内容排列整齐的区域 列表分类&#xff1a;无序列表、有序列表、定义列表。 例如&#xff1a; 1.1 无序列表 标签&#xff1a;ul 嵌套 li&#xff0c;ul是无序列表&#xff0c;li是列表条目。 注意事项&#xff1a; ul 标签里面只能包裹 li…...

STM32标准库-DMA直接存储器存取

文章目录 一、DMA1.1简介1.2存储器映像1.3DMA框图1.4DMA基本结构1.5DMA请求1.6数据宽度与对齐1.7数据转运DMA1.8ADC扫描模式DMA 二、数据转运DMA2.1接线图2.2代码2.3相关API 一、DMA 1.1简介 DMA&#xff08;Direct Memory Access&#xff09;直接存储器存取 DMA可以提供外设…...

从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)

设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile&#xff0c;新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...

NFT模式:数字资产确权与链游经济系统构建

NFT模式&#xff1a;数字资产确权与链游经济系统构建 ——从技术架构到可持续生态的范式革命 一、确权技术革新&#xff1a;构建可信数字资产基石 1. 区块链底层架构的进化 跨链互操作协议&#xff1a;基于LayerZero协议实现以太坊、Solana等公链资产互通&#xff0c;通过零知…...