算法课第六周作业 | Jump Game

算法课第六周探讨了贪心算法,通过LeetCode 55题讲解如何应用。题目要求判断非负整数数组中,是否能从第一个位置到达最后一个位置。解题策略是从起点开始,每次根据当前位置的最大步数前进,若过程中无法前进则返回false。通过不断更新最大步数来判断可达性。
摘要由CSDN通过智能技术生成

写在前面:

本周算法课主题内容是贪心算法,这道LeetCode 55正是用贪心算法解决。


题意解读:

给定一个非负整数组,每个位置的整数代表从当前位置可以前进的最大步数。

每次都是从第一个位置出发,请问给定的数组能否到达最后一个位置。


解题思路:

应用贪心算法,从第一个位置开始遍历,计算每一步能够到达的最大步数,如果最后一个位置在这个步数内,则可以到达。

如果在前进的过程中,最大步数等于0,无法前进自然不可到达,返回false。每前进一步,Max都要-1,并对比当前位置i的数值。

如果当前位置i的数值——可前进最大步数大与上一步遗留的最大步数,则更新最大步数。代码如下。


代码:

#include <iostream>
#include <vector>
using namespace std;

class Solution {
public:
    bool canJump(vector<int>& nums) {
        int size = nums.size();
        if(size <= 0)
        	return false;

        int max = -1;
        for(int i = 0; i < size; i++)
        {
        	if(nums[i] > max)
        		max = nums[i];

        	if (max + i + 1 >
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值