美文网首页
数组 Leetcode 1064 不动点

数组 Leetcode 1064 不动点

作者: 禾木清清 | 来源:发表于2019-07-16 19:30 被阅读0次

    题目

    给定已经按升序排列、由不同整数组成的数组 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
    

    相关文章

      网友评论

          本文标题:数组 Leetcode 1064 不动点

          本文链接:https://www.haomeiwen.com/subject/rjcxlctx.html