这篇文章主要介绍LeetCode如何在排序数组中查找元素的第一个和最后一个位置,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
一,在排序数组中查找元素的第一个和最后一个位置
1,问题描述
给定一个按照升序排列的整数数组nums,和一个目标值目标。找出给定目标值在数组中的开始位置和结束位置。
如果数组中不存在目标值目标,返回[-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=目标=109
3,题解思路
本题基于我们最熟悉的集合LinkedHashMap键值对集合来做
4,题解程序
导入Java。乌提尔。linkedhashmap
导入Java。乌提尔。列表;
导入Java。乌提尔。地图;
导入Java。乌提尔。小溪。收藏家;
公共类SearchRanageTest2 {
公共静态void main(String[]参数){ 0
int[] nums={3,3,3 };
int target=3;
int[]搜索范围=搜索范围(nums,target);
for(int num : SearchRange){ 0
系统。出去。打印(数字' \ t ');
}
}
公共静态int[]搜索范围(int[]nums,int target){ 0
if(nums==null | | nums。长度==0){ 0
返回新的int[]{-1,-1 };
}
MapInteger,整数映射=new LinkedHashMap(nums。长度);
for(int I=0;I nums . LengTii){ 0
map.put(i,nums[I]);
}
列表地图。整数收集=地图。entrySet()。流()。筛选器(x - x.getValue()==目标)。收集(收集者。to list());
如果(收集。size()==0){ 0
返回新的int[]{-1,-1 };
}
如果(收集。size()==1){ 0
返回新的int[]{collect.get(0).getKey(),collect.get(0).getKeY()};
}
如果(收集。大小)(2){ 0
返回新的int[]{collect.get(0).getKey(),collect.get(collect.size() - 1).getKeY()};
}
int[]结果=new int[collect。size()];
(同Internationalorganizations)国际组织索引=0;
(地图EntryInteger,整数条目: collect){ 0
结果[索引]=条目。GetKey();
}
返回结果;
}
}以上是“LeetCode如何在排序数组中查找元素的第一个和最后一个位置"这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/147025.html