算法系列--贪心算法

本文介绍了贪心算法,作为动态规划的一种简化方法,贪心算法通过每步选择局部最优解来达到全局最优。文章通过买卖股票的最佳时机问题阐述了贪心选择性质,并给出了解决该问题的贪心算法实现,展现了贪心算法在提高效率方面的优势。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、贪心算法

  上一节讲了动态规划,这里再讲一个和动态规划相似的算法,有时候也很容易搞混,即贪心算法。
  贪心算法和动态规划算法,都是用来求解最优化问题。但是在很多问题上,使用动态规划会有大炮打蚊子的感觉,而且使用贪心算法可以使问题更简单化。
  贪心算法,会做出局部最优的解,然后利用局部的解,得到全局的最优解。贪心算法的两个关键要素:

  • 贪心选择性质
  • 最优子结构

下面将介绍下这两个关键要素

二、贪心选择性质

  贪心选择性质,是贪心算法区别于动态规划的一个重要要素之一。贪心算法通常采用自顶向下,每做一次贪心选择,就将原定问题变为规模更小的问题,也就是说每次选择都会做出当时看来是最优的解,然后再继续向下求解。这样,最终整体得到一个最优解。

  因为最优子结构在动态规划中已经解释过了,这里不再详解。而关于贪心选择性质,就直接通过算法实例来体会吧。

三、贪心算法

买卖股票的最佳时机Ⅱ 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。

设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。

注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。

示例 1:

输入: [7,1,5,3,6,4] 输出: 7 解释: 在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 =
5)的时候卖出, 这笔交易所能获得利润 = 5-1 = 4 。
随后,在第 4 天(股票价格 = 3)的时候买入,在第 5 天(股票价格 = 6)的时候卖出, 这笔交易所能获得利润 = 6-3 = 3 。 示例 2:

输入: [1,2,3,4,5] 输出: 4 解释: 在第 1 天(股票价格 = 1)的时候买入,在第 5 天 (股票价格 =
5)的时候卖出, 这笔交易所能获得利润 = 5

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值