1390: 【中级组】不动点

Memory Limit:128 MB Time Limit:1.000 S
Judge Style:Text Compare Creator:
Submit:37 Solved:20

Description

          给定已经按升序排列、由 n个不同整数组成的数组 nums,返回满足 nums[i] == i 的最小索引 i。如果不存在这样的 i,返回 -1。

             你一定会想到用时间复杂度为 O(n) 的解决方案, 因为很直观也很简单。但你用己学到的算法,可以设计更优的解决方案吗?

示例 1:
输入:n=5, nums[] = {-13,0, 2, 5, 8}; 
输出:2
解释:对于给定的数组,nums[0] = -13,nums[1] = 0,nums[2] = 2, 因此输出为 2 。


示例 2:
输入:n=4, nums[] = {0,3,9,12};
输出:0
解释:nums[0] = 0,因此输出为 0 。


示例 3:
输入:n=6, nums[] = {-10,-5,3,4,7,9,12};
输出:-1
解释:不存在这样的 i 满足 nums[i] = i,因此输出为 -1 。
 

Input

      输入共两行, 第一行为 n 。 第二行为 nums数组中的 n个整数。数据之间用空格分隔。

Output

          输出满足 nums[i] == i 的最小索引 i。如果不存在这样的 i,返回 -1。


Sample Input Copy

5
-13 0  2  5  8

Sample Output Copy

2

HINT

提示:
1 <= nums数组长度 < 1000
-1000 <= arr[i] <= 1000