B. 寻找旋转排序数组中的最小值

内存限制:256 MiB 时间限制:1000 ms 标准输入输出
题目类型:传统 评测方式:文本比较

题目描述

已知一个长度为 n 的数组,预先按照升序排列,经由 1 到 n 次 旋转 后,得到输入数组。例如,原数组 a = [0,1,2,4,5,6,7] 在变化后可能得到:

  • 若旋转 4 次,则可以得到 [4,5,6,7,0,1,2]
  • 若旋转 7 次,则可以得到 [0,1,2,4,5,6,7] 注意,数组 [a[0], a[1], a[2], ..., a[n-1]] 旋转一次 的结果为数组 [a[n-1], a[0], a[1], a[2], ..., a[n-2]] 。

给你一个元素值 互不相同 的数组 a ,它原来是一个升序排列的数组,并按上述情形进行了多次旋转。请你找出并返回数组中的 最小元素 。

本题有多组数据。

输入格式

第一行,m,表示 m 组数据

接下来 m 组数据,每组占两行,其中第一行 n,第二行数组 a 的 n 个元素

输出格式

共 m 行,每一行是数组中的 最小元素

样例

示例 1:

输入:

3
5
3 4 5 1 2
7
4 5 6 7 0 1 2
4
11 13 15 17

输出:

1
0
11

解释:

第1组数据:原数组为 [1,2,3,4,5] ,旋转 3 次得到输入数组。

第2组数据:原数组为 [0,1,2,4,5,6,7] ,旋转 4 次得到输入数组。

第3组数据:原数组为 [11,13,15,17] ,旋转 4 次得到输入数组。

数据范围与提示

1 <= m <= 10000

1 <= n <= 10000

-10000 <= a[i] <= 10000

a 中的所有整数 互不相同, a 原来是一个升序排序的数组,并进行了 1 至 n 次旋转