๐๐ๅๆ Offer 11. ๆ่ฝฌๆฐ็ป็ๆๅฐๆฐๅญ
2022ๅนด10ๆ10ๆฅ
- algorithm
๐๐ๅๆ Offer 11. ๆ่ฝฌๆฐ็ป็ๆๅฐๆฐๅญ
้พๅบฆ: ๐๐
้ฎ้ขๆ่ฟฐ
่งฃๆณ
class Solution {
public int minArray(int[] numbers) {
// ๆ่ทฏ๏ผ
// ไบๅ
int len = numbers.length;
return mySol(numbers, 0, len - 1);
}
private int mySol(int[] numbers, int left, int right) {
// ้ๅฝ็ปๆญขๆกไปถ
if(left >= right) {
return numbers[left];
}
if(left == right - 1) {
return Math.min(numbers[left], numbers[right]);
}
// ่ณๅฐ 3 ไธชๅ
็ด
int mid = left + ((right - left) >> 1);
if(numbers[mid] > numbers[left]) {
// ๅทฆๅๅบ้ดๅๅบ
if(numbers[right] <= numbers[left]) {
// ๅจๅณๅๅบ้ด
return mySol(numbers, mid, right);
} else {
return numbers[left];
}
} else if(numbers[mid] == numbers[left]) {
// ๅทฆ็งปไธไธชๅไฝ
return mySol(numbers, left + 1, right);
} else {
// [mid] < [left]
return mySol(numbers, left, mid);
}
}
}