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 。
你一定会想到用时间复杂度为 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
1 <= nums数组长度 < 1000
-1000 <= arr[i] <= 1000