时间复杂度:O(n) 空间复杂度:O(1) */ classSolution { public: intjump(vector<int>& nums){ int n = nums.size(); int step = 0; // 当前步数 int cur = 0; // 当前可以到达的最远位置 int last = 0; // 上一跳的最远位置
for (int i = 0; i < n-1; i++) { // 更新当前可以到达的最远位置 cur = max(cur, nums[i] + i); // 如果到达了上一跳的最远位置,则更新 if (i == last) { last = cur; step++; } }
return step; } };
// 辅助函数:打印数组 voidprintArray(const vector<int>& nums){ cout << "["; for (size_t i = 0; i < nums.size(); i++) { cout << nums[i]; if (i != nums.size() - 1) cout << ","; } cout << "]"; }