LeetCode 題解 | 45. Jump Game II(跳躍遊戲 貪心 C++)

題目描述(困難難度)

原題鏈接
在這裏插入圖片描述

算法

(貪心) O(n)O(n)

每次更新最大距離,然後把每一步所能跳的範圍作爲一個區間,每當i==endi == end時,則必須要跳一步,如果endend大於等於size1size - 1,則可退出for循環
注意:size = 1時直接返回0
在這裏插入圖片描述

時間複雜度是O(n)O(n),空間複雜度是O(1)O(1)

C++代碼

class Solution {
public:
    int jump(vector<int> &nums) {
        
        int steps = 0;
        int end = 0;
        int maxPosition = 0;
        if (nums.size() <= 1) return 0;
        for (int i = 0; i < nums.size(); i++) {
            maxPosition = max(maxPosition, i + nums[i]);
            if (i == end) {
                end = maxPosition;
                steps++;
                if (end >= nums.size() - 1) break;
            }
        }

        return steps;
    }
};

寫在最後:我的博客主要是對計算機領域所學知識的總結、回顧和思考,把每篇博客寫得通俗易懂是我的目標,分享技術和知識是一種快樂 ,非常歡迎大家和我一起交流學習,有任何問題都可以在評論區留言,也期待與您的深入交流(^∀^●)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章