news 2026/1/14 12:00:21

贪心算法简介

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
贪心算法简介

贪心算法简介

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

例题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原题

总结

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/1/6 0:42:33

Windows11系统文件verifier.dll丢失或损坏问题 下载修复

在使用电脑系统时经常会出现丢失找不到某些文件的情况&#xff0c;由于很多常用软件都是采用 Microsoft Visual Studio 编写的&#xff0c;所以这类软件的运行需要依赖微软Visual C运行库&#xff0c;比如像 QQ、迅雷、Adobe 软件等等&#xff0c;如果没有安装VC运行库或者安装…

作者头像 李华
网站建设 2026/1/4 12:09:14

C++树形数据结构————树状数组、线段树中“逆序对”的问题

在我之前的几篇博客中整理了树状数组、线段树相关的笔记&#xff0c;我最近又刷了一些题&#xff0c;觉得有几道挺好的&#xff0c;可以巩固这些知识&#xff0c;这几道题重在逆序对的学习&#xff0c;比较经典&#xff0c;所以我决定分享一下。 目录 例题一&#xff1a;蓝桥…

作者头像 李华
网站建设 2026/1/9 22:57:17

2025年B站视频下载终极指南:bilili工具完整使用教程

2025年B站视频下载终极指南&#xff1a;bilili工具完整使用教程 【免费下载链接】bilili :beers: bilibili video (including bangumi) and danmaku downloader | B站视频&#xff08;含番剧&#xff09;、弹幕下载器 项目地址: https://gitcode.com/gh_mirrors/bil/bilili …

作者头像 李华
网站建设 2026/1/7 7:54:26

教程 32 - 几何体系统

上一篇&#xff1a;材质系统 | 下一篇&#xff1a;资源系统 | 返回目录 &#x1f4da; 快速导航 &#x1f4cb; 目录 引言学习目标几何体概念几何体数据结构几何体系统架构几何体配置与创建程序化几何体生成渲染器集成渲染包系统使用示例常见问题练习与挑战下一步 &#x1f4d…

作者头像 李华
网站建设 2026/1/13 15:01:23

Cursor高级技巧与最佳实践

Cursor 高级技巧与最佳实践&#xff08;2025 年 12 月最新版&#xff09; 掌握 Cursor 的高级用法&#xff0c;能让你从“用 AI 写代码”进化到“与 AI 协作如高级搭档”。以下技巧基于 2025 年社区最佳实践&#xff08;如 Builder.io、DEV Community、Cursor 官方文档&#x…

作者头像 李华
网站建设 2026/1/13 11:36:31

Cursor + MCP:冲击的不仅是前端,而是整个软件开发范式!

Cursor MCP&#xff1a;冲击的不仅是前端&#xff0c;而是整个软件开发范式&#xff01; 是的&#xff0c;你说得太对了&#xff01;Cursor Model Context Protocol (MCP) 的组合&#xff0c;正在从前端出发&#xff0c;迅速向全栈、后端、自动化测试、部署甚至非编程领域&a…

作者头像 李华