mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-08 16:54:50 +08:00
增加034 java解法
This commit is contained in:
@ -271,6 +271,64 @@ class Solution {
|
||||
}
|
||||
```
|
||||
|
||||
```java
|
||||
// 解法三
|
||||
class Solution {
|
||||
public int[] searchRange(int[] nums, int target) {
|
||||
int left = searchLeft(nums,target);
|
||||
int right = searchRight(nums,target);
|
||||
return new int[]{left,right};
|
||||
}
|
||||
public int searchLeft(int[] nums,int target){
|
||||
// 寻找元素第一次出现的地方
|
||||
int left = 0;
|
||||
int right = nums.length-1;
|
||||
while(left<=right){
|
||||
int mid = left+(right-left)/2;
|
||||
// >= 的都要缩小 因为要找第一个元素
|
||||
if(nums[mid]>=target){
|
||||
right = mid - 1;
|
||||
}else{
|
||||
left = mid + 1;
|
||||
}
|
||||
}
|
||||
// right = left - 1
|
||||
// 如果存在答案 right是首选
|
||||
if(right>=0&&right<nums.length&&nums[right]==target){
|
||||
return right;
|
||||
}
|
||||
if(left>=0&&left<nums.length&&nums[left]==target){
|
||||
return left;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
public int searchRight(int[] nums,int target){
|
||||
// 找最后一次出现
|
||||
int left = 0;
|
||||
int right = nums.length-1;
|
||||
while(left<=right){
|
||||
int mid = left + (right-left)/2;
|
||||
// <= 的都要更新 因为我们要找最后一个元素
|
||||
if(nums[mid]<=target){
|
||||
left = mid + 1;
|
||||
}else{
|
||||
right = mid - 1;
|
||||
}
|
||||
}
|
||||
// left = right + 1
|
||||
// 要找最后一次出现 如果有答案 优先找left
|
||||
if(left>=0&&left<nums.length&&nums[left]==target){
|
||||
return left;
|
||||
}
|
||||
if(right>=0&&right<=nums.length&&nums[right]==target){
|
||||
return right;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
|
||||
### Python
|
||||
@ -685,3 +743,4 @@ class Solution {
|
||||
<a href="https://programmercarl.com/other/kstar.html" target="_blank">
|
||||
<img src="../pics/网站星球宣传海报.jpg" width="1000"/>
|
||||
</a>
|
||||
|
||||
|
Reference in New Issue
Block a user