贪心算法总结及LeetCode经典题目解答

本文介绍了贪心算法的基本概念,包括贪心选择性质和最优子结构,并结合LeetCode上的跳跃游戏问题进行了解析,如跳跃游戏I和II,讲解如何运用贪心策略求解最小跳跃次数。
摘要由CSDN通过智能技术生成

贪心算法

贪心算法的定义:
在么一个阶段都选取当前阶段的最优选择,同时不考虑后续的决策影响。

贪心算法的要素:
**·**贪心选择性质:
全局最优可以通过一系列的局部最优来求解
同时将问题通过一系列的局部最优得到了简化,同时进行求解。
**·**最优子结构:
原问题的最优解包含着子问题的最优解
这意味着可以通过对子问题的求解构建规模更大的问题。

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){
       
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值