算法课第六周作业 | Jump Game
2017-04-02 16:37
176 查看
写在前面:
本周算法课主题内容是贪心算法,这道LeetCode 55正是用贪心算法解决。
题意解读:
给定一个非负整数组,每个位置的整数代表从当前位置可以前进的最大步数。
每次都是从第一个位置出发,请问给定的数组能否到达最后一个位置。
解题思路:
应用贪心算法,从第一个位置开始遍历,计算每一步能够到达的最大步数,如果最后一个位置在这个步数内,则可以到达。
如果在前进的过程中,最大步数等于0,无法前进自然不可到达,返回false。每前进一步,Max都要-1,并对比当前位置i的数值。
如果当前位置i的数值——可前进最大步数大与上一步遗留的最大步数,则更新最大步数。代码如下。
代码:
运行结果:
本周算法课主题内容是贪心算法,这道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 >= size) return true; if(max == 0) return false; max = max - 1; } return false; } };
运行结果:
相关文章推荐
- 算法作业_11(2017.3.29第六周)
- 算法设计与结构基础作业第六周
- 算法课程第六周Leetcode作业
- 算法分析与设计课程作业第六周#1
- 计科1111-1114班第六周讲义、课外作业(贪心算法之最小生成树、哈夫曼编码,截止日期:2014年4月18日23点-周五晚,学委飞信通知同学)
- 第六周作业
- 算法概论第二周作业2.1: 判断一个正整数是否为质数的算法
- 【算法作业9】LeetCode 455. Assign Cookies
- 吴恩达-DeepLearning.ai-Course1-Week2-实现逻辑回归算法-编程作业笔记
- 第二周作业 2.1——判断一个正整数是否为质数的算法
- 算法作业13
- Week 12算法分析作业
- 《Java数据结构和算法(第二版)》中编程作业2.6
- 第二次实验作业(算法基本功 与 综合思考)
- 北工大算法 作业2 动态规划 01背包问题
- 【BZOJ3809/3236】Gty的二逼妹子序列 [Ahoi2013]作业 莫队算法+分块
- 算法设计与结构基础作业第十七周
- 程序设计与算法(一)C语言程序设计CAP 第六周
- 圆排列【算法作业】
- 20155325 2017-2018 1 《信息安全系统设计基础》第六周学习总结(合并课上测试、课下作业、第八章)