今天面试遇到一个有意思的题,记录一下如下。
题目一:
一个循环数组,数组中原始值按升序排列(假设所有值不相等),但是现在从某个位置截断,该位置后面的元素移动到数组的最前面,找出这样的数组的最小值。如 arr = { 1,2,3,4,5,6},移动后arr = {4,5,6,1,2,3},其中最小值为1.
思路比较简单:基于二分查找
要注意的是数组为升序和降序的特殊情形。
代码如下:
public class Main {
public static void main(String args[]) {
int[] arr = new int[]{
4, 5, 6, 1, 2, 3};
int[] arr1 = new int[]{
1, 2, 3, 4, 5, 6};
int[] arr2 = new int[]{
6, 5, 4, 3, 2, 1};