news 2026/7/7 0:39:54

贪心算法简介

作者头像

张小明

前端开发工程师

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/7/7 18:06:35

AWR1843毫米波雷达Python数据采集与可视化完整指南

AWR1843毫米波雷达Python数据采集与可视化完整指南 【免费下载链接】AWR1843-Read-Data-Python-MMWAVE-SDK-3- Python program to read and plot the data in real time from the AWR1843 mmWave radar board (MMWAVE SDK 3) 项目地址: https://gitcode.com/gh_mirrors/aw/AW…

作者头像 李华
网站建设 2026/7/7 17:22:25

基于Java Swing的打砖块小游戏(1)

1、项目介绍 打砖块小游戏是一款基于Java Swing开发的经典休闲游戏&#xff0c;复刻了传统打砖块游戏的核心玩法。该项目采用面向对象的设计思想&#xff0c;封装了游戏中的核心元素&#xff08;挡板、小球、砖块&#xff09;&#xff0c;实现了游戏界面渲染、用户输入处理、碰…

作者头像 李华
网站建设 2026/7/6 20:55:12

JSP如何整合第三方控件支持大文件上传?

大文件传输解决方案&#xff08;源码级交付&#xff09; 作为山西IT行业软件公司项目负责人&#xff0c;我深刻理解当前需求的复杂性与紧迫性。针对政府、央企客户对100G级文件传输、高稳定性断点续传、信创兼容、数据安全的核心诉求&#xff0c;结合集团多项目统一组件、低成…

作者头像 李华
网站建设 2026/7/7 18:39:14

Ansible-Playbook

ansible-Playbook是一系列ansible命令的合集&#xff0c;使用的是yaml语言进行编写的&#xff0c;自上而下的顺序进行执行&#xff0c;并且可以进行使用变量Yaml语法yaml语言是专门使用于进行编写配置文件的 大小写敏感 使用缩进来进行表示层级关系 缩进的空格数不重要&#xf…

作者头像 李华
网站建设 2026/7/7 18:36:51

毕业设计项目 基于协同过滤的电影推荐系统

文章目录1 简介1 设计概要2 课题背景和目的3 协同过滤算法原理3.1 基于用户的协同过滤推荐算法实现原理3.1.1 步骤13.1.2 步骤23.1.3 步骤33.1.4 步骤44 系统实现4.1 开发环境4.2 系统功能描述4.3 系统数据流程4.3.1 用户端数据流程4.3.2 管理员端数据流程4.4 系统功能设计5 主…

作者头像 李华
网站建设 2026/7/7 18:11:41

主流小程序服务商功能特点与选择要点分析

在当下数字化零售趋势情形里&#xff0c;小程序商城已然成了众多企业去布局线上业务、着手构建私域流量的关键工具。面对市场当中种类众多繁杂的服务商&#xff0c;商家于选择之际常常需要全面综合性地考量系统的功能性、生态适配性、技术稳定性以及服务支持能力。本文会客观公…

作者头像 李华