当前位置: 首页 > news >正文

贪心算法简介

贪心算法简介

贪心算法是一种在每一步选择中都采取当前状态下最优(即最有利)的选择,从而试图获得结果是全局最优的算法。它并不保证在所有情况下都能得到全局最优解,但适用于具有“贪心选择性质”的问题,即局部最优解能导致全局最优解。

例题1:盛最多水的容器

问题描述
给定一个长度为n的整数数组height,每个元素表示垂直线的长度。找出两条线与 x 轴共同构成的容器可以容纳最多的水。容器不能倾斜。

思路讲解
使用双指针法,从数组两端开始。容量由指针间距和较短线的高度决定。贪心策略:每次移动较短线的指针,因为移动较长线不会增加容量(宽度减小,高度受限于短线)。重复直到指针相遇,记录最大容量。

C语言代码实现

intmaxArea(int*height,intheightSize){intleft=0,right=heightSize-1;intmax_water=0;while(left<right){inth=height[left]<height[right]?height[left]:height[right];intwater=h*(right-left);if(water>max_water)max_water=water;if(height[left]<height[right]){left++;}else{right--;}}returnmax_water;}

leetcode原题

例题2:最长回文串

问题描述
给定一个字符串s,用其中的字符构造最长的回文串,返回最大长度。注意:字符可以任意顺序排列,但回文串需对称。

思路讲解
统计每个字符的出现频率。贪心策略:对于每个字符,如果出现偶数次,全部使用;如果出现奇数次,使用偶数部分(即减1),并标记存在奇数字符。最后,如果有奇数字符,长度加1(中心可放一个奇数字符)。

C语言代码实现

intlongestPalindrome(char*s){intcount[128]={0};intlen=strlen(s);for(inti=0;i<len;i++){count[(int)s[i]]++;}intmaxlen=0;inthasodd=0;for(inti=0;i<128;i++){if(count[i]%2==0){maxlen+=count[i];}else{maxlen+=count[i]-1;hasodd=1;}}if(hasodd)maxlen+=1;returnmaxlen;}

leetcode原题

总结

贪心算法适用于局部最优能导致全局最优的问题,如以上例题。在实际应用中,需验证问题是否具有贪心性质,否则可能需动态规划等其他方法。

http://www.jsqmd.com/news/88480/

相关文章:

  • Cursor高级技巧与最佳实践
  • 告别面经焦虑!接口测试核心面试题一次搞定
  • a星学习记录 通过父节点从目的地格子坐标回溯起点
  • 2025年回弹仪十大品牌实力盘点,谁主沉浮?裂缝测宽仪/一体式楼板测厚仪/填土密实度检测仪/钢筋位置测定仪/高强回弹仪回弹仪品牌哪家好 - 品牌推荐师
  • JSP如何结合多线程技术提升大文件上传效率?
  • Cursor AI 安装与初始配置:30 分钟快速上手(2025 年 12 月最新版)
  • jd.item_review获取京东商品评论 及tb.item_review获取taobao商品评论
  • 基于Java Swing的打砖块小游戏(1)
  • 如何利用JSP实现100万文件的批量上传?
  • 第十一届中国大学生程序设计竞赛 郑州站(CCPC 2025 Zhengzhou Site)
  • 常见类后续,泛型,文件
  • 蓝桥杯Python-语法基础-2
  • WAN2.2-14B-Rapid-AllInOne实战指南:从零到精通的完整视频生成方案
  • JSP如何整合第三方控件支持大文件上传?
  • OrcaSlicer依赖库实战构建指南:从源码到高性能G代码生成器
  • 8088单板机 NASM汇编实验方法与步骤
  • C++树形数据结构————树状数组、线段树中“逆序对”的问题
  • Flutter工程化实战:从单人开发到团队协作的规范与效率指南
  • yaml-cpp内存优化策略深度解析:从性能瓶颈到高效解决方案
  • Windows11系统文件verifier.dll丢失或损坏问题 下载修复
  • 软件打开出现找不到Vfp6rchs.dll文件 丢失的情况 下载修复
  • 会员管理系统如何成为企业数字化转型的增长核心
  • Comtos Linux 追求的哲学
  • Qwen-Rapid-AIO模型加载异常全面排障:从现象到根治的完整指南
  • Flutter性能优化实战:从卡顿排查到极致体验的落地指南
  • 毕业设计项目 基于机器视觉的目标跟踪算法
  • AI视频创作三步合规法:从风险规避到版权保护实战指南
  • 用了3个月PandaWiki,我终于和知识管理和解了|超省心使用心得
  • 入门C语言学习---从零开始
  • 中高端路由器选购指南:Wi-Fi 7与硬件配置全解析