欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > 能源 > Java数据结构与算法(盛水的容器贪心算法)

Java数据结构与算法(盛水的容器贪心算法)

2024/10/24 23:22:06 来源:https://blog.csdn.net/acuteeagle01/article/details/139566984  浏览:    关键词:Java数据结构与算法(盛水的容器贪心算法)

前言

. - 力扣(LeetCode)

贪心算法(Greedy Algorithm)是一种在每一步选择中都采取当前状态下最优或最佳的选择,以期望通过一系列的局部最优选择达到全局最优解的算法。贪心算法的核心思想是贪心选择性质和最优子结构性质。

贪心算法的基本步骤

  1. 建立模型:将问题分解为一系列子问题。
  2. 贪心选择:在每一步都选择在当前状态下的局部最优解。
  3. 检验最优性:通过局部最优解的累积,最终得到全局最优解。

贪心算法的应用场景

贪心算法适用于那些能够证明通过局部最优选择能够达到全局最优的场景。以下是一些典型的贪心算法应用:

  1. 活动选择问题:选择最多的不重叠活动。
  2. 背包问题(部分背包):选择总价值最大的物品集合。
  3. 哈夫曼编码:构建最优二叉树以进行无损数据压缩。
  4. 最小生成树问题:如Kruskal算法和Prim算法,用于找到图中的最小生成树。
  5. 单源最短路径问题:如Dijkstra算法,用于找到图中从起点到所有其他点的最短路径。

实现原理

采用双指针移动方式,左右两边哪边低移动哪边,移动后计算容器大小。

具体代码实现

class Solution {public int maxArea(int[] height) {int left=0;int right=height.length-1;int res=0;while(left<right){int leftHigh=height[left];int rightHigh=height[right];int minHigh=Math.min(leftHigh,rightHigh);res=Math.max(res,(right-left)*minHigh);if(leftHigh<rightHigh){left++;}else{right--;}}return res;}
}

QA1:

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com