アレイの回転の最小数(変換二分法)

記事のディレクトリ

タイトル

ここに画像を挿入説明

私のコード

public class 旋转数组的最小数字 {

	/**
	 * @param args
	 *            改造二分法
	 */
	public static void main(String[] args) {
		int[] a = { 3, 4, 5, 1, 2 };
		int res = min(a);
		System.out.println(res);
	}

	private static int min(int[] a) {
		int begin = 0;
		int end = a.length - 1;
		// 考虑没有旋转这种特殊的旋转
		if (a[begin] < a[end]) {
			return a[begin];
		}

		// begin和end指向相邻元素,退出
		while (begin + 1 < end) {
			int mid = begin + ((end - begin) >> 1);
			// 要么左侧有序,要么右侧有序
			if (a[mid] >= a[begin]) {
				begin = mid;
			} else {
				end = mid;
			}
		}

		return a[end];
	}

}

公開された60元の記事 ウォンの賞賛4 ビュー1280

おすすめ

転載: blog.csdn.net/qq_43966129/article/details/105052143