安全性を証明するために、アレイの回転の最小の数を提供します

タイトル説明

いくつかの要素の配列の先頭には、配列、我々は回転呼んで配列の最後に移動しました。
出力回転最小の素子アレイの回転の入力配列の非降順。
例えば、配列{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];
    }
}
リリース7件のオリジナルの記事 ウォンの賞賛0 ビュー1352

おすすめ

転載: blog.csdn.net/Incanus_/article/details/105242784
おすすめ