贪心算法
贪心算法的定义:
在么一个阶段都选取当前阶段的最优选择,同时不考虑后续的决策影响。
贪心算法的要素:
**·**贪心选择性质:
全局最优可以通过一系列的局部最优来求解
同时将问题通过一系列的局部最优得到了简化,同时进行求解。
**·**最优子结构:
原问题的最优解包含着子问题的最优解
这意味着可以通过对子问题的求解构建规模更大的问题。
LeetCode55跳跃游戏
给定一个非负整数数组,你最初位于数组的第一个位置。
数组中的每个元素代表你在该位置可以跳跃的最大长度。
判断你是否能够到达最后一个位置。
示例 1:
输入: [2,3,1,1,4]
输出: true
解释: 从位置 0 到 1 跳 1 步, 然后跳 3 步到达最后一个位置。
思路:从后往前遍历,每一个元素的值应该保证大于等于1,这样才能保证至少可以实现一步一步到达最后,如果最后到达开始位置,有出现该位置的值小于1步的就返回false。
public boolean canJump(int[] nums) {
int len=nums.length;
int flag=1;
for(int i=len-2;i>=0;i--){
if(nums[i]>=flag){
flag=1;
}
else{
flag++;
}
if(i==0&&flag>1){