zoukankan      html  css  js  c++  java
  • [Leetcode][Python]45: Jump Game II

    # -*- coding: utf8 -*-
    '''
    __author__ = 'dabay.wang@gmail.com'

    45: Jump Game II
    https://oj.leetcode.com/problems/jump-game-ii/

    Given an array of non-negative integers, you are initially positioned at the first index of the array.
    Each element in the array represents your maximum jump length at that position.
    Your goal is to reach the last index in the minimum number of jumps.

    For example:
    Given array A = [2,3,1,1,4]

    The minimum number of jumps to reach the last index is 2.
    (Jump 1 step from index 0 to 1, then 3 steps to the last index.)

    ===Comments by Dabay===
    上一次的最远边界,与这一步能够达到的最远边界组成一个范围段。这是第N步能够到的最远范围。
    如果这个范围超过了数组的边界,返回步数。
    '''

    class Solution:
    # @param A, a list of integers
    # @return an integer
    def jump(self, A):
    if len(A) <= 1:
    return 0
    last_index = len(A) - 1
    min_index = 1
    max_index = A[0]
    step = 1
    if max_index >= last_index:
    return step
    while True:
    new_max_index = min_index
    step = step + 1
    for index in xrange(min_index, max_index+1):
    reach = index + A[index]
    new_max_index = max(new_max_index, reach)
    if new_max_index >= last_index:
    return step
    else:
    min_index, max_index = max_index+1, new_max_index


    def main():
    s = Solution()
    print s.jump([2,3,0,1,4])


    if __name__ == "__main__":
    import time
    start = time.clock()
    main()
    print "%s sec" % (time.clock() - start)


  • 相关阅读:
    Number Sequence ----HDOJ 1711
    B. Berland Bingo
    迷宫城堡--HDOJ 1269(Tarjan)
    迷宫城堡--HDOJ 1269
    前向星,链式前向星
    linux下建立无线wifi------简单实用!
    leetcode187- Repeated DNA Sequences- medium
    leetcode173- Binary Search Tree Iterator- medium
    leetcode170- Two Sum III
    leetcode167- Two Sum II
  • 原文地址:https://www.cnblogs.com/Dabay/p/4364318.html
Copyright © 2011-2022 走看看