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

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

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

给你一个按照非递减顺序排列的整数数组 nums,和一个目标值 target。请你找出给定目标值在数组中的开始位置和结束位置。

如果数组中不存在目标值 target,返回 [-1, -1]

你必须设计并实现时间复杂度为 O(log n) 的算法解决此问题。

示例 1:

输入:nums = [5,7,7,8,8,10], target = 8
输出:[3,4]

示例 2:

输入:nums = [5,7,7,8,8,10], target = 6
输出:[-1,-1]

示例 3:

输入:nums = [], target = 0
输出:[-1,-1]

提示:

  • 0 <= nums.length <= 105
  • -109 <= nums[i] <= 109
  • nums 是一个非递减数组
  • -109 <= target <= 109

该题考察的是二分法,二分法求左右边界问题

//荷兰国旗问题,两次二分
public class Problem_0034_FindFirstAndLastPositionOfElementInSortedArray {public static int[] searchRange(int[] nums, int target) {int[] ans = { -1, -1 };if (nums == null || nums.length == 0) {return ans;}ans[0] = findFirst(nums, target);ans[1] = findLast(nums, target);return ans;}public static int findFirst(int[] arr, int num) {int L = 0;int R = arr.length - 1;int ans = -1;int mid = 0;while (L <= R) {mid = L + ((R - L) >> 1);if (arr[mid] < num) {L = mid + 1;} else if (arr[mid] > num) {R = mid - 1;} else {ans = mid;//  此处因为要找的target最左边界,所有移动R为mid - 1,再看左边还有没有target值R = mid - 1;}}return ans;}public static int findLast(int[] arr, int num) {int L = 0;int R = arr.length - 1;int ans = -1;int mid = 0;while (L <= R) {mid = L + ((R - L) >> 1);if (arr[mid] < num) {L = mid + 1;} else if (arr[mid] > num) {R = mid - 1;} else {ans = mid;//  此处因为要找的target最右边界,所有移动L为mid + 1,再看右边还有没有target值L = mid + 1;}}return ans;}
}

相关文章:

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

34.在排序数组中查找元素的第一个和最后一个位置 给你一个按照非递减顺序排列的整数数组 nums&#xff0c;和一个目标值 target。请你找出给定目标值在数组中的开始位置和结束位置。 如果数组中不存在目标值 target&#xff0c;返回 [-1, -1]。 你必须设计并实现时间复杂度为…...

js树过滤

// 递归过滤得到每一项的hidden为false的数据 function filterTree(arr) { return arr.filter(item > { if (item.children) { item.children filterTree(item.children) } if (!item.hidden) { return true } }) }...

Java多线程并发篇----第十六篇

系列文章目录 文章目录 系列文章目录前言一、线程等待(wait)二、线程睡眠(sleep)三、线程让步(yield)四、线程中断(interrupt)五、Join 等待其他线程终止前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这…...

测评结果:免费的“文心一言3.5”香,但是付费的产品质量更高

文章目录 前言一、文心一言3.5生成的图片和文章1.文心一言生成的图片在文心一言3.5中输入以下内容&#xff1a;我的测评结果&#xff1a; 2.文心一言生成的文章在文心一言3.5中输入以下内容&#xff1a;我的测评结果&#xff1a; 二、ChatGPT生成的图片和文章1.ChatGPT4.0 生成…...

Matlab GUI设计基础范例(可以一步一步跟着做)

我们要做一个GUI界面&#xff0c;可以选择peaks、membrane和sinc三种三维图数据&#xff0c;选择画出surf、mesh和contour三种图像。 打开GUI 每个版本打开方式可能都不一样&#xff0c;但有一个是相同的&#xff0c;就是在命令行输入guide回车。 绘制控件 大概就绘制成这样…...

@Transactional(rollbackFor = {Exception.class})与 @Transactional区别

在Spring框架中&#xff0c;Transactional 注解用于标记方法或类&#xff0c;以表明该方法或类内包含的数据库操作应当在一个事务中执行。事务的基本原则是“原子性”&#xff0c;即所有操作要么全部成功&#xff0c;要么全部失败。 1. Transactional&#xff08;不指定 rollb…...

数据结构——二叉树(先序、中序、后序及层次四种遍历(C语言版))超详细~ (✧∇✧) Q_Q

目录 二叉树的定义&#xff1a; *特殊的二叉树&#xff1a; 二叉树的性质&#xff1a; 二叉树的声明&#xff1a; 二叉树的先序遍历&#xff1a; 二叉树的中序遍历&#xff1a; 二叉树的后序遍历&#xff1a; 二叉树的层序遍历&#xff1a; 二叉树的节点个数&#xff1a; 二叉…...

如何快速打造属于自己的接口自动化测试框架

1 接口测试 接口测试是对系统或组件之间的接口进行测试&#xff0c;主要是校验数据的交换&#xff0c;传递和控制管理过程&#xff0c;以及相互逻辑依赖关系。 接口自动化相对于UI自动化来说&#xff0c;属于更底层的测试&#xff0c;这样带来的好处就是测试收益更大&#xff…...

人工智能在数据安全中的应用场景

场景一&#xff1a;数据资产梳理 数据资产梳理是数据安全的基础。知道企业究竟有多少数据&#xff0c;这些数据在哪里&#xff1f;有哪些类型的数据&#xff1f;其中哪些是敏感数据&#xff1f;这些数据的敏感等级分别是什么&#xff1f;只有明确了保护的目标&#xff0c;才能…...

2024.1.16每日一题

LeetCode 2719.统计整数数目 2719. 统计整数数目 - 力扣&#xff08;LeetCode&#xff09; 题目描述 给你两个数字字符串 num1 和 num2 &#xff0c;以及两个整数 max_sum 和 min_sum 。如果一个整数 x 满足以下条件&#xff0c;我们称它是一个好整数&#xff1a; num1 &l…...

python入门,数据容器的通用操作(len,max,min,sorted)

1.len统计容器内元素个数 2.max统计元素最大元素 3.min统计元素最小元素 4.容器的转化功能 list&#xff08;容器&#xff09;将给定容器转化为列表 字符串转列表将字符串内的每一个元素都取了出来作为列表的每一个元素 字典则只会取出它的key&#xff0c;value会消失 str&…...

运筹说 第67期 | 动态规划模型的建立与求解

通过前一期的学习&#xff0c;我们已经学会了动态规划的基本概念和基本原理。本期小编带大家学习动态规划模型的建立与求解。 动态规划模型的建立 一 概述 建立动态规划的模型&#xff0c;就是分析问题并建立问题的动态规划基本方程。 成功地应用动态规划方法的关键&#x…...

大模型压缩与优化的技术原理与创新方法

目录 前言1 模型压缩简介2 知识蒸馏3 模型剪枝3.1 结构化剪枝3.2 非结构化剪枝 4 模型量化4.1 浮点表示 vs 定点表示4.2 位数选择与性能影响4.3 量化技术 5 其他模型压缩方法5.1 Weight Sharing: 参数共享5.2 Low-rank Approximation: 低秩分解5.3 Architecture Search: 神经网…...

ConcurrentSkipListMap 深度解析

ConcurrentSkipListMap是Java集合框架中的一员&#xff0c;它实现了ConcurrentNavigableMap接口&#xff0c;基于跳表&#xff08;Skip List&#xff09;实现&#xff0c;并提供了高效的并发控制。在本文中&#xff0c;我们将深入研究ConcurrentSkipListMap的底层实现原理、适用…...

Vue学习笔记6--配置代理

一、axios Axios 是一个基于 promise 网络请求库&#xff0c;作用于node.js 和浏览器中。 它是 isomorphic 的(即同一套代码可以运行在浏览器和node.js中)。在服务端它使用原生 node.js http 模块, 而在客户端 (浏览端) 则使用 XMLHttpRequests。 二、配置代理 1. 方法一 在…...

嵌入式培训机构四个月实训课程笔记(完整版)-C++和QT编程第三天-C++类和对象高级应用(物联技术666)

链接:https://pan.baidu.com/s/1YRXI0WiABUlYaQXQDNfbyA?pwd=1688 提取码:1688 上午:类和对象高级应用(续) 下午:派生和继承 教学内容: 1、友元 类的私有成员只能在类定义的范围内使用,也就是说私有成员只能通过它的成员函数来访问但是,有时候需要在类的外部访问…...

SAP中采购文档价格条件可以删除吗?

首先要声名&#xff0c;基于采购价格条件的严谨性和历史追朔需求&#xff0c;删除属于危险操作。不建议普通用户去执行操作。如果有兴趣&#xff0c;在测试系统中自行测试一下即可。正式系统中&#xff0c;还请慎重处理。 笔者公司日常不会去删除采购价格&#xff0c;日常处理…...

Baumer工业相机堡盟工业相机如何通过NEOAPI SDK设置硬件触发模式(C++)

Baumer工业相机堡盟工业相机如何通过NEOAPI SDK设置硬件触发模式&#xff08;C&#xff09; Baumer工业相机Baumer工业相机NEOAPI SDK和硬件触发模式的技术背景Baumer工业相机通过BGAPISDK设置硬件触发模式功能1.引用合适的类文件2.通过BGAPISDK在Line0上施加12V/24V电压信号实…...

嵌入式培训机构四个月实训课程笔记(完整版)-Linux网络编程第二天-tcp编程练习(物联技术666)

点赞+关注,功德无量。更多配套资料,欢迎私信。 网盘链接:百度网盘 请输入提取码 WebServer编程: -------------------------------------- #include <stdio.h> #include <stdlib.h> #include <string.h> #i…...

【IC前端虚拟项目】MVU子模块DS文档编写与注意事项

【IC前端虚拟项目】数据搬运指令处理模块前端实现虚拟项目说明-CSDN博客 DS文档顾名思义就是Design Specification,设计规格文档,对应的就是我们实际一个模块的设计思路和细节: DS - Design Specification(设计规格):"DS" 表示设计规格,它是在架构规格之后,…...

装饰模式(Decorator Pattern)重构java邮件发奖系统实战

前言 现在我们有个如下的需求&#xff0c;设计一个邮件发奖的小系统&#xff0c; 需求 1.数据验证 → 2. 敏感信息加密 → 3. 日志记录 → 4. 实际发送邮件 装饰器模式&#xff08;Decorator Pattern&#xff09;允许向一个现有的对象添加新的功能&#xff0c;同时又不改变其…...

【kafka】Golang实现分布式Masscan任务调度系统

要求&#xff1a; 输出两个程序&#xff0c;一个命令行程序&#xff08;命令行参数用flag&#xff09;和一个服务端程序。 命令行程序支持通过命令行参数配置下发IP或IP段、端口、扫描带宽&#xff0c;然后将消息推送到kafka里面。 服务端程序&#xff1a; 从kafka消费者接收…...

stm32G473的flash模式是单bank还是双bank?

今天突然有人stm32G473的flash模式是单bank还是双bank&#xff1f;由于时间太久&#xff0c;我真忘记了。搜搜发现&#xff0c;还真有人和我一样。见下面的链接&#xff1a;https://shequ.stmicroelectronics.cn/forum.php?modviewthread&tid644563 根据STM32G4系列参考手…...

React Native 导航系统实战(React Navigation)

导航系统实战&#xff08;React Navigation&#xff09; React Navigation 是 React Native 应用中最常用的导航库之一&#xff0c;它提供了多种导航模式&#xff0c;如堆栈导航&#xff08;Stack Navigator&#xff09;、标签导航&#xff08;Tab Navigator&#xff09;和抽屉…...

逻辑回归:给不确定性划界的分类大师

想象你是一名医生。面对患者的检查报告&#xff08;肿瘤大小、血液指标&#xff09;&#xff0c;你需要做出一个**决定性判断**&#xff1a;恶性还是良性&#xff1f;这种“非黑即白”的抉择&#xff0c;正是**逻辑回归&#xff08;Logistic Regression&#xff09;** 的战场&a…...

使用分级同态加密防御梯度泄漏

抽象 联邦学习 &#xff08;FL&#xff09; 支持跨分布式客户端进行协作模型训练&#xff0c;而无需共享原始数据&#xff0c;这使其成为在互联和自动驾驶汽车 &#xff08;CAV&#xff09; 等领域保护隐私的机器学习的一种很有前途的方法。然而&#xff0c;最近的研究表明&…...

srs linux

下载编译运行 git clone https:///ossrs/srs.git ./configure --h265on make 编译完成后即可启动SRS # 启动 ./objs/srs -c conf/srs.conf # 查看日志 tail -n 30 -f ./objs/srs.log 开放端口 默认RTMP接收推流端口是1935&#xff0c;SRS管理页面端口是8080&#xff0c;可…...

Maven 概述、安装、配置、仓库、私服详解

目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...

管理学院权限管理系统开发总结

文章目录 &#x1f393; 管理学院权限管理系统开发总结 - 现代化Web应用实践之路&#x1f4dd; 项目概述&#x1f3d7;️ 技术架构设计后端技术栈前端技术栈 &#x1f4a1; 核心功能特性1. 用户管理模块2. 权限管理系统3. 统计报表功能4. 用户体验优化 &#x1f5c4;️ 数据库设…...

Linux 中如何提取压缩文件 ?

Linux 是一种流行的开源操作系统&#xff0c;它提供了许多工具来管理、压缩和解压缩文件。压缩文件有助于节省存储空间&#xff0c;使数据传输更快。本指南将向您展示如何在 Linux 中提取不同类型的压缩文件。 1. Unpacking ZIP Files ZIP 文件是非常常见的&#xff0c;要在 …...