二分系列题

1. 搜索插入位置

在这里插入图片描述


/*** 查找插入的位置:返回第一个大于等于 target 的索引;* 如果 target 大于所有元素,则返回数组长度(即插入到末尾)*/
class Solution {public int searchInsert(int[] nums, int target) {int left = 0;int right = nums.length - 1;// 标准的二分模板while (left <= right) {int mid = left + (right - left) / 2;if (nums[mid] < target) {left = mid + 1; // 插入点在右边} else {right = mid - 1; // 插入点在左边或当前}}// 循环结束后,left 就是插入位置(即第一个 >= target 的位置)return left;}public static void main(String[] args) {Solution solution = new Solution();int[] nums1 = {1, 3, 5, 6};System.out.println(solution.searchInsert(nums1, 5)); // 输出 2System.out.println(solution.searchInsert(nums1, 2)); // 输出 1System.out.println(solution.searchInsert(nums1, 7)); // 输出 4System.out.println(solution.searchInsert(nums1, 0)); // 输出 0}
}

2. 第一个大于等于 q 的位置索引


/*** 查找第一个大于等于 target 的位置* 如果不存在、返回 -1*/
class Solution {public int binarySearchFirstGreaterThanOrEqualToQ(int[] nums, int target) {int left = 0;int right = nums.length - 1;while (left <= right) {int mid = left + (right - left) / 2;if (nums[mid] < target) {left = mid + 1;} else {right = mid - 1;}}// 检查 left 是否越界、且是否符合条件if (left < nums.length && nums[left] >= target) {return left; // 找到了符合条件的位置} else {return -1; // 没有任何元素满足 >= target}}public static void main(String[] args) {Solution solution = new Solution();int[] nums1 = {1, 3, 4, 4, 4, 4, 5, 5, 6};System.out.println(solution.binarySearchFirstGreaterThanOrEqualToQ(nums1, 4)); // 输出: 2int[] nums2 = {1, 2, 3};System.out.println(solution.binarySearchFirstGreaterThanOrEqualToQ(nums2, 5)); // 输出: -1int[] nums3 = {1, 2, 3};System.out.println(solution.binarySearchFirstGreaterThanOrEqualToQ(nums3, 2)); // 输出: 1}
}

3. 第一个大于 q 的位置索引

那就 是 第一个大于等于q+1的位置就行了
就是这个思想

class Solution {public int binarySearchFirstGreaterThanOrEqualToQ(int[] nums, int target) {int left = 0;int right = nums.length - 1;while (left <= right) {int mid = left + (right - left) / 2;if (nums[mid] < target) {left = mid + 1;} else {right = mid - 1;}}// 检查 left 是否越界、且是否符合条件if (left < nums.length && nums[left] >= target) {return left; // 找到了符合条件的位置} else {return -1; // 没有任何元素满足 >= target}}public static void main(String[] args) {Solution solution = new Solution();int[] nums = {1, 3, 4, 4, 4,4,5,5,6};int target = 4;int result = solution.binarySearchFirstGreaterThanOrEqualToQ(nums, target+1);System.out.println(result);}
}

4. 最后一个大于等于q的位置索引

那就 第一个大于等于q+1的位置-1 就行了


class Solution {public int binarySearchFirstGreaterThanOrEqualToQ(int[] nums, int target) {int left = 0;int right = nums.length - 1;while (left <= right) {int mid = left + (right - left) / 2;if (nums[mid] < target) {left = mid + 1;} else {right = mid - 1;}}// 检查 left 是否越界、且是否符合条件if (left < nums.length && nums[left] >= target) {return left; // 找到了符合条件的位置} else {return -1; // 没有任何元素满足 >= target}}public static void main(String[] args) {Solution solution = new Solution();int[] nums = {1, 3, 4, 4, 4,4,5,5,6};int target = 4;int result = solution.binarySearchFirstGreaterThanOrEqualToQ(nums, target+1);System.out.println(result);}
}

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

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

相关文章

Octave 简介:一款强大的开源科学计算工具

引言 在科学计算、数据分析和数值模拟的领域&#xff0c;选择合适的工具对于提升工作效率和性能至关重要。虽然市面上有许多选择&#xff0c;但 GNU Octave 作为一款功能强大、开源免费的软件&#xff0c;它在科学计算中脱颖而出。如果你是学生、研究人员或开发者&#xff0c;…

TI Code Composer Studio编译时SDK报错问题解决

1. 我们使用TI的CCS&#xff08;Code Composer Studio&#xff09;编译环境编译工程时&#xff0c;首次安装很可能会遇到编译器找不到SDK的问题。 2. 当CCS编程工具找不到SDK路径时&#xff0c;会有如下报错&#xff1a; Problems窗口提示&#xff1a; Product com.ti.SIMPL…

MySQL大数据量查询优化

1.在回表数据量不大的情况下考虑增加索引&#xff0c;如果有多个筛选条件的情况下可以考虑添加联合索引&#xff0c;并且满足最佳左前缀的原则。 2.避免全表查询返回不需要的字段&#xff0c;增加磁盘io的压力 3.大表的分页查询&#xff0c;limit越大效率越低&#xff0c;可以先…

【Linux网络#5】(UDP的简单应用)DictServer(中译英字典)| ChatServer(简单聊天室)

1.中译英字典 -- DictServer 我们这里先中途插入一个趣味的翻译显示实验&#xff0c;在 EchoServer 的基础上来实现&#xff0c;大部分代码基本都没变&#xff0c;修改了一少部分代码&#xff0c;大家可以仔细看看 先给定一些等会我们要翻译的单词数据 dict.txt apple: 苹果…

DeepSeek实战--微调

1.为什么是微调 &#xff1f; 微调LLM&#xff08;Fine-tuning Large Language Models&#xff09; 是指基于预训练好的大型语言模型&#xff08;如GPT、LLaMA、PaLM等&#xff09;&#xff0c;通过特定领域或任务的数据进一步训练&#xff0c;使其适应具体需求的过程。它是将…

FTP/TFTP/SSH/Telnet

目录 一、FTP&#xff08;文件传输协议&#xff09; 定义 工作原理 特点 应用场景 二、TFTP&#xff08;简单文件传输协议&#xff09; 定义 工作原理 特点 应用场景 三、SSH&#xff08;安全外壳协议&#xff09; 定义 工作原理 特点 应用场景 四、Telnet&…

K8S常见问题汇总

一、 驱逐 master 节点上的所有 Pod 这会“清空”一个节点&#xff08;包括 master&#xff09;上的所有可驱逐的 Pod&#xff1a; kubectl drain <master-node-name> --ignore-daemonsets --delete-emptydir-data--ignore-daemonsets&#xff1a;保留 DaemonSet 类型的…

【银河麒麟高级服务器操作系统】服务器外挂存储ioerror分析及处理分享

更多银河麒麟操作系统产品及技术讨论&#xff0c;欢迎加入银河麒麟操作系统官方论坛 forum.kylinos.cn 了解更多银河麒麟操作系统全新产品&#xff0c;请点击访问 麒麟软件产品专区&#xff1a;product.kylinos.cn 开发者专区&#xff1a;developer.kylinos.cn 文档中心&a…

C++命名空间、内联与捕获

命名空间namespace 最常见的命名空间是std,你一定非常熟悉,也就是: using namespace std;命名空间的基本格式 注意,要在头文件里面定义! namespace namespace_name{data_type function_name(data_type parameter){data_type result;//function contentreturn result;}…

软件测试名词科普:驱动模块、桩模块

目录 1. 驱动模块 2. 桩模块​ 3. 驱动模块 vs 桩模块 对比表 4. 示例代码 在软件测试中&#xff0c;​驱动模块&#xff08;Driver Module&#xff09;​和桩模块&#xff08;Stub Module&#xff09;​是两种用于单元测试的关键组件&#xff0c;主要用于模拟测试环境中的…

线程池的核心参数和线程创建方式,线程和进程

Java线程池的核心参数 Java线程池通过ThreadPoolExecutor类进行配置&#xff0c;其核心参数如下&#xff1a; corePoolSize&#xff08;核心线程数&#xff09; 作用&#xff1a;线程池中保持活动的最小线程数&#xff0c;即使这些线程处于空闲状态。 行为&#xff1a;默认情…

【报错】view size is not compatible with input tensor‘s size and stride

完整报错 Traceback (most recent call last): File "D:\360MoveData\Users\HONOR\whu\TwoStageTraining.py", line 590, in <module> criterionseg_criterion, save_dir./models, writerwriter_first_stage) File "D:\360MoveData\Users\HONOR\whu\TwoS…

汽车免拆诊断案例|车辆行驶中急加速车身抖动故障排除 2 例

案例1 2017款丰田卡罗拉车行驶中急加速车身偶尔抖动 故障现象  一辆 2017款丰田卡罗拉车&#xff0c;搭载9NR 发动机&#xff0c;累计行驶里程约为9.6万km。车主进厂反映&#xff0c;该车行驶中急加速时&#xff0c;车身偶尔抖动。 故障诊断  接车后试车&#xff0c;发动机…

vue3 computed方法使用详细讲解

Computed方法用于创建计算属性&#xff0c;它的值由其他响应式数据计算得出&#xff0c;并且会在依赖数据发生改变时自动更新。因为vue3兼容vue2的选项式api,所以习惯用vue2的小伙伴可以直接用vue2的方法写是没有问题的。但我这里介绍的是computed在vue3中的新语法&#xff1a;…

std::iota(C++)

std::iota 1. 概述2. 函数原型3. 使用示例示例 1&#xff1a;填充 vector<int>示例 2&#xff1a;从非零起始值开始 4. 应用场景5. 注意事项6. 与其它算法比较小结 1. 概述 std::iota 定义在头文件 中&#xff0c;C11 起引入。 它用于向前迭代器区间依次填入连续递增的数…

基于Jaccard算法的用户浏览历史推荐商品系统实战+springboot+vue源码实现

大家好&#xff0c;这里是小罗毕设工作室。今天给大家带来了一套完整的推荐系统&#xff1a; “基于Jaccard算法的用户浏览历史推荐商品系统”。 系统源码后端实现是springboot&#xff0c;前端是vue3。 视频演示 基于Jaccard算法的用户浏览历史推荐商品系统实战 图片截图 算法…

正态分布和幂律分布

1. 背景与引入 正态分布 历史来源&#xff1a;18世纪由高斯&#xff08;Gauss&#xff09;在研究测量误差时提出&#xff0c;后被广泛应用于自然现象和社会科学的数据建模。重要性&#xff1a;被称为“钟形曲线”&#xff0c;是统计学中最核心的分布之一&#xff0c;支撑中心极…

免费AI图像编辑平台,最新无损放大技术

软件介绍 腾讯ARC网页在线AI图片处理是一款由腾讯ARC实验室推出的在线图像处理工具。凭借腾讯的科技实力&#xff0c;这款工具在图像处理领域展现了卓越的性能。 功能亮点 这款在线图像处理工具提供多种功能&#xff0c;包括人像修复、人像抠图、动漫增强、万物识别以及…

# 部署深度学习模型:Flask API 服务端与客户端通信实战

部署深度学习模型&#xff1a;Flask API 服务端与客户端通信实战 在这篇文章中&#xff0c;我们将探讨如何使用 Flask 框架部署一个深度学习模型&#xff0c;并通过客户端与服务端进行通信。我们将通过一个实际的例子&#xff0c;展示如何构建服务端和客户端&#xff0c;以及如…

物理服务器紧急救援:CentOS系统密码重置全流程实战指南

前言 在企业IT运维实践中&#xff0c;物理服务器密码丢失是典型的"低概率高风险"事件。某金融科技公司曾因核心服务器密码遗失导致业务中断36小时&#xff0c;直接损失超过800万元。这起真实案例揭示了系统密码管理的关键性——当承载重要业务的物理服务器遭遇密码丢…