LeetCode如何在排序数组中查找元素的第一个和最后一个位置
发表于:2025-02-09 作者:千家信息网编辑
千家信息网最后更新 2025年02月09日,这篇文章主要介绍LeetCode如何在排序数组中查找元素的第一个和最后一个位置,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一,在排序数组中查找元素的第一个和最后一个位置1,问
千家信息网最后更新 2025年02月09日LeetCode如何在排序数组中查找元素的第一个和最后一个位置
这篇文章主要介绍LeetCode如何在排序数组中查找元素的第一个和最后一个位置,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
一,在排序数组中查找元素的第一个和最后一个位置
1,问题描述
给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。
如果数组中不存在目标值 target,返回 [-1, -1]。
2,示例描述
示例 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
3,题解思路
本题基于我们最熟悉的集合LinkedHashMap键值对集合来做
4,题解程序
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
public class SearchRanageTest2 {
public static void main(String[] args) {
int[] nums = {3, 3, 3};
int target = 3;
int[] searchRange = searchRange(nums, target);
for (int num : searchRange) {
System.out.print(num + "\t");
}
}
public static int[] searchRange(int[] nums, int target) {
if (nums == null || nums.length == 0) {
return new int[]{-1, -1};
}
Map map = new LinkedHashMap<>(nums.length);
for (int i = 0; i < nums.length; i++) {
map.put(i, nums[i]);
}
List> collect = map
.entrySet()
.stream()
.filter(x -> x.getValue() == target)
.collect(Collectors.toList());
if (collect.size() == 0) {
return new int[]{-1, -1};
}
if (collect.size() == 1) {
return new int[]{collect.get(0).getKey(), collect.get(0).getKey()};
}
if (collect.size() > 2) {
return new int[]{collect.get(0).getKey(), collect.get(collect.size() - 1).getKey()};
}
int[] result = new int[collect.size()];
int index = 0;
for (Map.Entry entry : collect) {
result[index++] = entry.getKey();
}
return result;
}
}
以上是"LeetCode如何在排序数组中查找元素的第一个和最后一个位置"这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!
数组
位置
示例
元素
排序
目标
目标值
输入
输出
内容
篇文章
题解
价值
兴趣
升序
小伙
小伙伴
思路
整数
更多
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
米多科技与武汉互联网
人工智能技术教育软件开发
用户 网站 数据库设计
网络技术和软件公司
有关软件开发工具
云防护节点到服务器网络不通
临沂时序数据库
郧西公司软件开发包括哪些
网络安全方面怎么做
昆山品牌网络技术哪家便宜
数据库怎么切换管理员
京东聊天软件开发
杭州软件开发2年经验
lattice软件开发流程
什么是后端数据库
网络安全教育课程心得
网络安全家长会新闻
软件开发费能一次扣除不
软件开发分屏幕
魔兽60级轮回服务器开放
阿拉巴巴网络安全
人工智能技术教育软件开发
视频管理服务器的设置
商业数据库前景
烽火星空网络安全开发
x86服务器厂商 软件开发
仓库erp软件开发定制
翎风引擎编辑数据库
poc软件开发工程师
计算机网络技术网络安全论文