【leetcode】34. (Medium)Find First and Last Position of Element in Sorted Array(JAVA)

xiaoxiao2025-10-03  4

题目链接

解题思路: 这道题的意思是找到数组里面一个数的起始位置和末尾位置,比如: [1,5,5,7,7,8] 8的起始末尾位置为[5,5] 如果没有这个目标数,就返回[-1,-1]

还是折半查找做,先看能不能找到这个数,能找到就设置两个指针start,end从这个数开始分别向两边外拓;如果过没有找到返回[-1,-1]

提交代码:

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

运行结果:

转载请注明原文地址: https://www.6miu.com/read-5037304.html

最新回复(0)