贪心算法案例

1.买卖股票的最佳时机

给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。

你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。

返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0 。

解法:遍历数组每一个元素,设置一个变量为minPrice为整数类型最大数,让每个元素跟他比较,

假如元素把比他小,赋值给该变量,否则让该元素减去minPrice当前最小元素,如果比已知的最大利润大,那就赋值给最大利润

class Solution {
    public int maxProfit(int[] prices) {
        int max=0;
        int minPrice=Integer.MAX_VALUE;
        for(int i=0;i<prices.length;i++){
            if(prices[i]<minPrice){
                minPrice=prices[i];
            }else if(prices[i]-minPrice>max){
                max=prices[i]-minPrice;
            }
        }
        return max;
    }
}

2.买卖股票的最佳时机Ⅱ

给你一个整数数组 prices ,其中 prices[i] 表示某支股票第 i 天的价格。

在每一天,你可以决定是否购买和/或出售股票。你在任何时候 最多 只能持有 一股 股票。你也可以先购买,然后在 同一天 出售。

返回 你能获得的 最大 利润 。

解法:

由于股票的购买没有限制,因此整个问题等价于寻找 x 个不相交的区间 (li​,ri​] 使得如下的等式最大化,res = (prices[3] - prices[2]) + (prices[2] - prices[1]) + (prices[1] - prices[0]) = prices[3] - prices[0] 。

class Solution {
    public int maxProfit(int[] prices) {
        int profit=0;
        for(int i=1;i<prices.length;i++){
            if(prices[i]-prices[i-1]>0){
                profit=profit+prices[i]-prices[i-1];
            }
            
        }
        return profit;
    }
}

3.跳跃游戏

给你一个非负整数数组 nums ,你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。

判断你是否能够到达最后一个下标,如果可以,返回 true ;否则,返回 false 。

解法:

每次取最大跳跃步数(取最大覆盖范围),整体最优解:最后得到整体最大覆盖范围,看是否能到终点

class Solution {
    public boolean canJump(int[] nums) {
        int n=nums.length;
        int most=0;
        for(int i=0;i<n;++i){
            if(i<=most){
            most=Math.max(most,i+nums[i]);
            if(most>=n-1){
                return true;
            }
        }
        }
        return false;
    }
    
}

相关推荐

  1. Python实战开发及案例分析(5)—— 贪心算法

    2024-07-15 09:22:06       36 阅读
  2. 贪心算法

    2024-07-15 09:22:06       41 阅读
  3. 贪心算法

    2024-07-15 09:22:06       24 阅读
  4. 计算机算法贪心算法

    2024-07-15 09:22:06       60 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-15 09:22:06       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-15 09:22:06       71 阅读
  3. 在Django里面运行非项目文件

    2024-07-15 09:22:06       58 阅读
  4. Python语言-面向对象

    2024-07-15 09:22:06       69 阅读

热门阅读

  1. C# 使用正则解析html

    2024-07-15 09:22:06       21 阅读
  2. XML Schema 指示器

    2024-07-15 09:22:06       28 阅读
  3. 概率论原理精解【2】

    2024-07-15 09:22:06       25 阅读
  4. 刷题2路1线

    2024-07-15 09:22:06       21 阅读
  5. 面向对象编程的6大原则

    2024-07-15 09:22:06       23 阅读
  6. ArduPilot开源代码之AP_AHRS_View

    2024-07-15 09:22:06       20 阅读
  7. B4005 [GESP202406 四级] 黑白方块

    2024-07-15 09:22:06       74 阅读
  8. Unity3D中如何降低游戏的Drawcall详解

    2024-07-15 09:22:06       28 阅读
  9. Apache访问机制配置

    2024-07-15 09:22:06       26 阅读
  10. 比较运算符练习·二

    2024-07-15 09:22:06       17 阅读
  11. 什么是幂等?如何实现幂等?

    2024-07-15 09:22:06       24 阅读
  12. 道路运输企业管理人员安全考核试题(附答案)

    2024-07-15 09:22:06       20 阅读