题目
给定已经按升序排列、由不同整数组成的数组 A,返回满足 A[i] == i 的最小索引 i。如果不存在这样的 i,返回 -1。
示例 1:
输入:[-10,-5,0,3,7]
输出:3
解释:
对于给定的数组,A[0] = -10,A[1] = -5,A[2] = 0,A[3] = 3,因此输出为 3 。
示例 2:
输入:[0,2,5,8,17]
输出:0
示例:
A[0] = 0,因此输出为 0 。
示例 3:
输入:[-10,-5,3,4,7,9]
输出:-1
解释:
不存在这样的 i 满足 A[i] = i,因此输出为 -1 。
提示:
1 <= A.length < 10^4
-10^9 <= A[i] <= 10^9
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/fixed-point
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
集体思路1: 64ms
使用二分查找,不断缩小范围,直到找到值
代码
class Solution(object):
def fixedPoint(self, A):
"""
:type A: List[int]
:rtype: int
"""
if not A:
return -1
left = 0
right = len(A)-1
while left <= right:
mid = left + (right-left)/2
if mid == A[mid]:
return mid
elif mid < A[mid]:
right = right - 1
else:
left = left + 1
return -1
解题思路2 (72ms)
遍历数组
代码
class Solution(object):
def fixedPoint(self, A):
"""
:type A: List[int]
:rtype: int
"""
for i in range(len(A)):
if i == A[i]:
return i
return -1
网友评论