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

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

  1. 题目描述
  2. 思路
  3. 解题方法
  4. 复杂度
  5. Code

题目描述

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

力扣链接

给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。
如果数组中不存在目标值 target,返回 [-1, -1]。
进阶:你可以设计并实现时间复杂度为 O(log⁡n)O(\log n)O(logn) 的算法解决此问题吗?

示例 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]

思路

二分查找

解题方法

1.二分查找找到定位
2.向左找左边界,向右找右边界

复杂度

时间复杂度:

O(log n)

空间复杂度:

O(1)

Code

Java

class Solution {public int[] searchRange(int[] nums, int target) {int loc = searchLocation(nums, target);if(loc == -1){return new int[]{-1,-1};}int leftLoc = loc, rightLoc = loc;// 找左边界while(leftLoc - 1 >= 0 && nums[leftLoc-1] == target) {leftLoc--;}// 找右边界while(rightLoc + 1 < nums.length && nums[rightLoc+1] == target){rightLoc++;}return new int[]{leftLoc, rightLoc};}public int searchLocation(int[] nums, int target){int len = nums.length;int left = 0, right = len-1;while (left <= right){int mid = left + (right-left)/2;if(nums[mid] > target) {right = mid -1;} else if (nums[mid] < target){left = mid + 1;} else {return mid;}}return -1;}
}

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

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

相关文章

Python 调整PDF文件的页面大小

在处理PDF文件时&#xff0c;我们可能会遇到这样的情况&#xff1a;原始PDF文档不符合我们的阅读习惯&#xff0c;或者需要适配不同显示设备等。这时&#xff0c;我们就需要及时调整PDF文档中的页面尺寸&#xff0c;以满足不同应用场景的需求。 利用Python语言的高效性和灵活性…

Linux--网络通信(一)概述

网络通信概述 网络通信本质上是一种进程间通信&#xff0c;是位于网络中不同主机上的进程之间的通信&#xff0c;属于 IPC 的一种&#xff0c; 通常称为 socket IPC。所以网络通信是为了解决在网络环境中&#xff0c;不同主机上的应用程序之间的通信问题。 大概可以分为三个层…

优化关联查询

三个表的创建语句 CREATE TABLE test.afx_output_source_item (cheadguid INT NOT NULL,goodsid INT NULL,goodsno VARCHAR(45) NULL,goodsname VARCHAR(45) NULL,model VARCHAR(45) NULL,goodstaxno VARCHAR(45) NULL,PRIMARY KEY (cheadguid));CREATE TABLE test.afx_output…

23种设计模式之一————外观模式详细介绍与讲解

外观模式详细讲解 一、概念二、 外观模式结构核心思想及解释模式的UML类图模式角色应用场景模式优点模式缺点 三、实例演示图示代码展示运行结果 一、概念 外观模式&#xff08;Facade Pattern&#xff09;是一种结构型设计模式&#xff0c;它提供了一个统一的接口&#xff0c…

【问题解决】Android Studio Jellyfish新建Kotlin项目后Gradle Sync及Maven下载很慢

创建新项目之后&#xff0c;Gradle Sync和Build都很慢&#xff0c;因为下载Gradle和Maven等工具。 代码默认配置 settings.gradle.kts pluginManagement {repositories {google {content {includeGroupByRegex("com\\.android.*")includeGroupByRegex("com\\.g…

ASSM是Automatic Segment Space Management(自动段空间管理)解析

ASSM是Automatic Segment Space Management&#xff08;自动段空间管理&#xff09;的缩写&#xff0c;是Oracle数据库引入的一项重要特性&#xff0c;首次出现在Oracle 9i中。ASSM旨在简化空间管理和提高数据库性能&#xff0c;特别是对于表和索引段的空间分配和回收过程。 在…

Android Activity 设计详解

文章目录 Android Activity 设计说明1. Activity 的生命周期2. Activity 的启动模式3. Activity 的通信4. Activity 的布局和视图管理5. Activity 的配置变化处理6. Activity 的保存和恢复状态7. Activity 的任务和返回栈 总结 Android Activity 设计说明 在 Android 中&#…

Ansible01-Ansible的概述、实验环境初始化、Inventory

目录 写在前面1. Ansible是什么1.1 简介与来历1.2 Ansible的特点1.3Ansible的架构与工作流程1.3.1 ansible 任务执行模式1.3.2 ansible 执行流程1.4 Ansible的模块 2. Ansible实验初始化2.1 实验环境2.2Ansible的安装2.2.1 Ansible的程序结构 2.3 修改Ansible配置文件2.3.1 配置…

【408精华知识】页、页面、页框、页帧、内存块、物理块、物理页面还傻傻分不清?

在做题过程中&#xff0c;我们经常能看到页、页框、块等概念&#xff0c;初接触时&#xff0c;常感觉傻傻分不清&#xff0c;这篇文章将简洁地介绍它们之间的联系与区别。 这些概念之间的根本区别&#xff0c;在于是物理上的概念还是逻辑上的概念&#xff0c;也即是虚地址还是实…

汇聚荣:新手做拼多多应该注意哪些事项?

新手在拼多多开店&#xff0c;面临的是竞争激烈的市场和复杂的运营规则。要想在这个平台上脱颖而出&#xff0c;必须注意以下几个关键事项。 一、市场调研与定位 深入了解市场需求和竞争对手情况是新手开店的首要步骤。选择有潜力的细分市场&#xff0c;并针对目标消费者群体进…

华为云服务培训

一、存储类服务实践 是什么&#xff1a; 云硬盘( Elastic Volume Service )是一种为 ECS&#xff08;弹性云服务器&#xff09;、BMS&#xff08;裸金属服务器&#xff09; 等计算服务提供持久性存储的服务。 作用&#xff1a; 它通过数据冗余和缓存加速等多项技术&#xf…

卷积报错:AttributeError: ‘Conv2d‘ object has no attribute ‘total_ops‘ (已解)

AttributeError: ‘Conv2d’ object has no attribute ‘total_ops’ File "/home/...../..._encoder.py", line 34, in forwardx = self.conv(x)File "/home/...../python3.8/site-packages/torch/nn/modules/module.py", line 1511, in _wrapped_call_im…

Spring系列-03-BeanFactory和Application接口和相关实现

BeanFactory BeanFactory和它的子接口们 BeanFactory 接口的所有子接口, 如下图 BeanFactory(根容器)-掌握 BeanFactory是根容器 The root interface for accessing a Spring bean container. This is the basic client view of a bean container; further interfaces such …

windows 11上自带时间管理-番茄工作法

在 Windows 11 中&#xff0c;你可以使用 专注 功能来最大程度地减少干扰&#xff0c;帮助你保持专注。 专注的工作原理 专注时段打开后&#xff0c;将会出现以下情况&#xff1a; 专注计时器将显示在屏幕上 请勿打扰将打开 任务栏中的应用不会闪烁发出提醒 任务栏中应用的…

内网穿透原理解析

在互联网信息时代的今天&#xff0c;我们经常会听到“内网穿透”&#xff0c;却有很多人对此并不了解&#xff0c;下面小编给大家介绍一下内网穿透的工作原理。 1. 什么是内网穿透? 在了解内网穿透原理之前&#xff0c;我们先说什么是内网穿透。内网&#xff0c;就是在公司或…

SpringCloud系列(23)--手写实现负载轮询算法

前言&#xff1a;在上一篇文章中我们介绍了关于负载轮询算法的原理以及看了源代码&#xff0c;而本章节内容则是着重于我们自己手写一个负载轮询算法 1、分别编写provider-payment8001、provider-payment8002这两个子项目的PaymentController类&#xff0c;增加一个/payment/lb…

C++中引用的全面解析与实战应用

C中的引用作为一种强大的特性&#xff0c;不仅能够提升代码的效率和清晰度&#xff0c;还能在一定程度上保障数据的安全性。本文将深入探讨引用的各个方面&#xff0c;包括其定义、使用场景、类型、与指针的区别&#xff0c;并通过实例加以说明。 引用的定义与基本概念 引用可…

探究Python中的元组:不可变性与多重用途

元组是 Python 中的另一种重要数据结构&#xff0c;与列表相似&#xff0c;但具有一些关键区别。让我们来详细了解一下 Python 中的元组&#xff0c;包括基本语法、常用命令、示例代码、应用场景、注意事项和总结。 基本语法 创建元组 在 Python 中&#xff0c;元组使用圆括…

Py之llama-parse:llama-parse(高效解析和表示文件)的简介、安装和使用方法、案例应用之详细攻略

Py之llama-parse&#xff1a;llama-parse(高效解析和表示文件)的简介、安装和使用方法、案例应用之详细攻略 目录 llama-parse的简介 llama-parse的安装和使用方法 1、安装 2、使用方法 第一步&#xff0c;获取API 密钥 第二步&#xff0c;安装LlamaIndex、LlamaParse L…

AI爆文写作:经常做这四个小练习,让你解锁爆文标题的秘籍,让你的标题炸裂吸晴!

文章目录 一、无法吸引眼球的标题二、标题炸裂的秘籍练习1:洞察受众的渴望与恐惧。练习2:运用感官语言,用生动的描述和具体细节,在读者心中勾勒出一幅画面。练习3:展示变化。练习4:用意外转折激发好奇心。一、无法吸引眼球的标题 这样的标题: [如何通过阅读改变人生」「…