タイトル説明
いくつかの要素の配列の先頭には、配列、我々は回転呼んで配列の最後に移動しました。
出力回転最小の素子アレイの回転の入力配列の非降順。
例えば、配列{3,4,5,1,2}、{1,2,3,4,5}は最小のアレイの回転です。
注:配列のサイズは、リターン0 0である場合、すべての要素は、0よりも大きいに記載されています。
思考
これは、バイナリ検索を使用して
3例を検討します。
- この場合、左側の配列[中間] <配列[R]、中間の特定の最小数
- 配列[中間] =配列[R]、しないの最小数は左右にこの時点で現れます。一つ一つが、見つけることは、例えば、[1,0,1,1,1]
- この場合の配列[中間]>配列[R]、中間右の特定の最小数
参照コード
import java.util.ArrayList;
public class Solution {
public int minNumberInRotateArray(int [] array) {
int l = 0;
int r = array.length - 1;
while (l <= r) {
int mid = l + (r - l) / 2;
if (array[mid] < array[r]) {
r = mid;
} else if (array[mid] == array[r]) {
r -= 1;
} else {
l = mid + 1;
}
}
return array[l];
}
}