45. Jump Game II

1.問題

  • 需要花幾步才能到達最後一格

2.想法

  • 提問

  • function header, parameter

  • test input

  • 說明想法

    • 當"當前的索引"大於"上一次所能到達的最遠索引時", 將計數器+1, 並且將"上一次所能到達的最遠索引"更新為"當前所能到達的最遠索引"

    • 每走一步都更新"當前所能到達的最遠索引"

  • 測試計算複雜度

3.程式碼

class Solution {
public:
    int jump(vector<int>& nums) {
        int n = nums.size();
        if (n == 0) {
            return 0 ;
        }
        
        int res = 0, last = 0, curr = 0;
        
        for (int i = 0; i < n; i++) {
            if (i > last) {
                last = curr;
                res++;
            }   
            curr = max(curr, i + nums[i]);
        }
        
        return res;
    }
};

Last updated