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

2024-09-02 00:36

本文主要是介绍【Hot100】LeetCode—34. 在排序数组中查找元素的第一个和最后一个位置,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

  • 1- 思路
    • 二分 - 左侧二分 + 右侧二分
  • 2- 实现
    • ⭐34. 在排序数组中查找元素的第一个和最后一个位置——题解思路
  • 3- ACM 实现


  • 原题链接:34. 在排序数组中查找元素的第一个和最后一个位置

1- 思路

二分 - 左侧二分 + 右侧二分

  • 右区间二分 ——> 找首次出现的位置 ——>nums[mid] >= target
  • 左区间二分 ——> 找最后一次出现的位置 ——> **nums**[mid] <= target

2- 实现

⭐34. 在排序数组中查找元素的第一个和最后一个位置——题解思路

在这里插入图片描述

class Solution {public int[] searchRange(int[] nums, int target) {int[] res = new int[2];Arrays.fill(res,-1);if(nums.length == 0 || nums==null){return res;}int left = 0;int right = nums.length-1;while(left<right){int mid = (left+right)/2;if(nums[mid] >= target){right = mid;}else{left = mid+1;}}if(nums[left]==target){res[0] = left;}left = 0;right = nums.length-1;while(left<right){int mid = (left+right+1)/2;if(nums[mid] <= target){left = mid;}else{right = mid-1;}}if(nums[left]==target){res[1] = left;}return res;}
}

3- ACM 实现

public class findFirstAndLast {public static int[] finFAndL(int[] nums,int target){int[] res = new int[2];Arrays.fill(res,-1);int left = 0;int right = nums.length-1;while(left<right){int mid = (left+right)/2;if(nums[mid] >= target){right = mid;}else{left = mid+1;}}if(res[left]==target){res[0] = left;}left = 0;right = nums.length-1;while(left<right){int mid = (left+right+1)/2;if(nums[mid] <= target){left = mid;}else{right = mid-1;}}if(res[left]==target){res[1] = left;}return res;}public static void main(String[] args) {Scanner sc = new Scanner(System.in);String input = sc.nextLine();input = input.substring(1,input.length()-1);String[] parts = input.split(",");int[] nums = new int[parts.length];for(int i = 0 ; i < nums.length;i++){nums[i] = Integer.parseInt(parts[i]);}System.out.println("输入target");int target = sc.nextInt();int[] res = finFAndL(nums,target);System.out.println("结果是"+res[0]+" "+res[1]);}
}

这篇关于【Hot100】LeetCode—34. 在排序数组中查找元素的第一个和最后一个位置的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1128493

相关文章

Java中的数组与集合基本用法详解

《Java中的数组与集合基本用法详解》本文介绍了Java数组和集合框架的基础知识,数组部分涵盖了一维、二维及多维数组的声明、初始化、访问与遍历方法,以及Arrays类的常用操作,对Java数组与集合相... 目录一、Java数组基础1.1 数组结构概述1.2 一维数组1.2.1 声明与初始化1.2.2 访问

MySQL中查找重复值的实现

《MySQL中查找重复值的实现》查找重复值是一项常见需求,比如在数据清理、数据分析、数据质量检查等场景下,我们常常需要找出表中某列或多列的重复值,具有一定的参考价值,感兴趣的可以了解一下... 目录技术背景实现步骤方法一:使用GROUP BY和HAVING子句方法二:仅返回重复值方法三:返回完整记录方法四:

C# 比较两个list 之间元素差异的常用方法

《C#比较两个list之间元素差异的常用方法》:本文主要介绍C#比较两个list之间元素差异,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1. 使用Except方法2. 使用Except的逆操作3. 使用LINQ的Join,GroupJoin

MySQL查询JSON数组字段包含特定字符串的方法

《MySQL查询JSON数组字段包含特定字符串的方法》在MySQL数据库中,当某个字段存储的是JSON数组,需要查询数组中包含特定字符串的记录时传统的LIKE语句无法直接使用,下面小编就为大家介绍两种... 目录问题背景解决方案对比1. 精确匹配方案(推荐)2. 模糊匹配方案参数化查询示例使用场景建议性能优

关于集合与数组转换实现方法

《关于集合与数组转换实现方法》:本文主要介绍关于集合与数组转换实现方法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、Arrays.asList()1.1、方法作用1.2、内部实现1.3、修改元素的影响1.4、注意事项2、list.toArray()2.1、方

springboot项目打jar制作成镜像并指定配置文件位置方式

《springboot项目打jar制作成镜像并指定配置文件位置方式》:本文主要介绍springboot项目打jar制作成镜像并指定配置文件位置方式,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录一、上传jar到服务器二、编写dockerfile三、新建对应配置文件所存放的数据卷目录四、将配置文

一文详解Java Stream的sorted自定义排序

《一文详解JavaStream的sorted自定义排序》Javastream中的sorted方法是用于对流中的元素进行排序的方法,它可以接受一个comparator参数,用于指定排序规则,sorte... 目录一、sorted 操作的基础原理二、自定义排序的实现方式1. Comparator 接口的 Lam

python3如何找到字典的下标index、获取list中指定元素的位置索引

《python3如何找到字典的下标index、获取list中指定元素的位置索引》:本文主要介绍python3如何找到字典的下标index、获取list中指定元素的位置索引问题,具有很好的参考价值,... 目录enumerate()找到字典的下标 index获取list中指定元素的位置索引总结enumerat

CSS实现元素撑满剩余空间的五种方法

《CSS实现元素撑满剩余空间的五种方法》在日常开发中,我们经常需要让某个元素占据容器的剩余空间,本文将介绍5种不同的方法来实现这个需求,并分析各种方法的优缺点,感兴趣的朋友一起看看吧... css实现元素撑满剩余空间的5种方法 在日常开发中,我们经常需要让某个元素占据容器的剩余空间。这是一个常见的布局需求

MySQL JSON 查询中的对象与数组技巧及查询示例

《MySQLJSON查询中的对象与数组技巧及查询示例》MySQL中JSON对象和JSON数组查询的详细介绍及带有WHERE条件的查询示例,本文给大家介绍的非常详细,mysqljson查询示例相关知... 目录jsON 对象查询1. JSON_CONTAINS2. JSON_EXTRACT3. JSON_TA