2023-12-29 贪心算法 分发饼干和摆动序列以及最大子数组和

news2024/12/25 23:37:30

贪心算法

什么是贪心算法?

就是每一阶段的最优解,从局部的最优解达到全局的最优解!
最好用的策略就是举反例,如果想不到反例,那么就试一试贪心吧

贪心算法一般分为如下四步:

  • 将问题分解为若干个子问题
  • 找出适合的贪心策略
  • 求解每一个子问题的最优解
  • 将局部最优解堆叠成全局最优解

455. 分发饼干

思路:这类涉及列表的数据!可以先考虑对列表进行排序先!然后优先满足最小胃口的或者排序优先满足最大胃口的都可以!

局部最优就是大饼干喂给胃口大的,充分利用饼干尺寸喂饱一个,全局最优就是喂饱尽可能多的小孩

img

class Solution:
    def findContentChildren(self, g: List[int], s: List[int]) -> int:
        s.sort()
        g.sort()
        count = 0
        sum = 0
        for _g in g:
            while sum < len(s):
                if _g <= s[sum]:
                    count += 1
                    s[sum] = -1
                    break
                sum += 1
        return count
    
class Solution:
    def findContentChildren(self, g, s):
        g.sort()  # 将孩子的贪心因子排序
        s.sort()  # 将饼干的尺寸排序
        index = 0
        for i in range(len(s)):  # 遍历饼干
            if index < len(g) and g[index] <= s[i]:  # 如果当前孩子的贪心因子小于等于当前饼干尺寸
                index += 1  # 满足一个孩子,指向下一个孩子
        return index  # 返回满足的孩子数目
            

376. 摆动序列

思路:理解题目,一上一下就是产生峰值就是摆动了!这就是贪心所贪的地方,让峰值尽可能的保持峰值,然后删除单一坡度上的节点

376.摆动序列

class Solution:
    def wiggleMaxLength(self, nums: List[int]) -> int: 
        if len(nums) <= 1:
            return len(nums)
        pre_diff = 0	#前一对元素的差值	
        cur_diff = 0	#当前一对元素的差值
        count = 1	# 记录峰值
        for i in range(len(nums) - 1):
            cur_diff = nums[i + 1] -nums[i]
            if (pre_diff >= 0 and cur_diff < 0) or (pre_diff <= 0 and cur_diff > 0):
                count += 1
                pre_diff = cur_diff
        return count 
            

53. 最大子数组和

思路:关键点是,每次的比较叠加的和不能小于0,否则不如当前的数大了!还有使用额外列表来做的思想也很精妙!关键点也是大于0这一点!

53.最大子序和

class Solution:
    def maxSubArray(self, nums: List[int]) -> int:
        # 使用额外列表来解决
        dp = [0] * len(nums)
        dp[0] = nums[0]
        for i in range(1, len(nums)):
            if dp[i - 1] > 0:  
                dp[i] = dp[i - 1] + nums[i]
            else:
                dp[i] = nums[i]
        return max(dp)
    def maxSubArray1(self, nums: List[int]) -> int:
        # 使用滑动窗口来解决 关键点就是每次比较的和知否大于当前的数值
        cur = nums[0]
        temp = 0
        for _num in nums:
            temp += _num
            # 如果临时值大于当前窗口的最大值 重新赋值
            if temp > cur:
                cur = temp
            # 如果不小于0的哇,怎么累加都不会小于刚加的那个值了!
            if temp < 0:
                temp = 0
        return cur

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1374103.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

09-责任链模式-C语言实现

责任链模式&#xff1a;Avoid coupling the sender of a request to its receiver by giving more than one object a chance to handle the request.Chain the receiving objects and pass the request along the chain until an object handles it.&#xff08;使多个对象都有…

Qt QRadioButton单选按钮控件

文章目录 1 属性和方法1.1 文本1.2 选中状态1.3 自动排他1.4 信号和槽 2 实例2.1 布局2.2 代码实现 Qt中的单选按钮类是QRadioButton它是一个可以切换选中&#xff08;checked&#xff09;或未选中&#xff08;unchecked&#xff09;状态的单选按钮单选按钮常用在“多选一”的场…

机器学习工程师学习路线图

我的新书《Android App开发入门与实战》已于2020年8月由人民邮电出版社出版&#xff0c;欢迎购买。点击进入详情 机器学习工程&#xff08;MLE&#xff09;是一个快速发展的领域&#xff0c;对熟练专业人员的需求很高。如果您对 MLE 职业感兴趣&#xff0c;路线图可以帮助您培养…

大小论文over,坐等毕业。写点ROS上建图与导航的心得,也不知道对错,欢迎讨论~(对,谨慎阅读,不存在误人子弟哈~.~)

大小论文总算是都搞定了&#xff0c;院审过了送外审了&#xff0c;生死有命富贵在天&#xff0c;希望外审专家大佬们高抬贵手o.O~ 我所理解的建图算法的移植&#xff0c;能不能运行起来&#xff0c;大框架上就是把一棵完整的坐标转换关系的TF树给整理“通顺”&#xff0c;TF&am…

一文搞懂Git版本工具常用的操作命令

简述 Git是一个分布式的版本控制工具,其在使用上要比SVN等版本控制工具稍显复杂。为了便于理解,本文通过图文方式详细介绍Git的使用,以便于快速掌握Git。Git涉及的主要概念和命令如图所示。理解上述概念后,基本可以使用Git完成日常开发工作。关于Git的介绍以及常用命令在之前的…

RK3568驱动指南|第十篇 热插拔-第116章netlink监听广播信息实验

瑞芯微RK3568芯片是一款定位中高端的通用型SOC&#xff0c;采用22nm制程工艺&#xff0c;搭载一颗四核Cortex-A55处理器和Mali G52 2EE 图形处理器。RK3568 支持4K 解码和 1080P 编码&#xff0c;支持SATA/PCIE/USB3.0 外围接口。RK3568内置独立NPU&#xff0c;可用于轻量级人工…

CES 2024:AI智能大爆发,引领科技新纪元

美国当地时间1月9日&#xff0c;2024年国际消费类电子产品展览会&#xff08;CES&#xff09;如期在内华达州拉斯维加斯举行。作为全球最盛大的科技盛会&#xff0c;每年&#xff0c;来自世界各地的顶尖科技企业都会参加CES&#xff0c;展示他们的最新科技产品和创新&#xff0…

Python的安装与卸载【Windows系统】

在 Windows 上安装与卸载 Python Python的安装 下载Python 安装Python 下载完后打开安装包 注意最底下的"Add Python 3.8 to Path"&#xff08;将Python加入环境变量&#xff09;一定要勾选&#xff01;&#xff01;&#xff01;这样就可以免去之后环境配置的烦恼…

在本地测试nginx中localhost不行,需要写成127.0.0.1

在Windows 10系统的命令提示符cmd中&#xff0c;执行命令ping localhost&#xff0c;并没有出现我与其的ip地址“127.0.0.1”&#xff0c;而是“[::1]”。 问题原因 在cmd中ping localhost解析出来的是ipv6的::1的原因是windows有个优先解析列表&#xff0c;当ipv6的优先级高于…

【cmu15445c++入门】(4)c++中的模板方法

一、template模板方法 模板方法是c的一个特性&#xff0c;可以让你的代码在不指定数据类型的情况下&#xff0c;运行不同的数据类型。 你可以创建模板方法和模板类&#xff0c;本文讨论模板方法。 二、代码 // Includes std::cout (printing) for demo purposes. #include &…

4S店汽车行业万能通用小程序源码系统:功能强大,集合汽车在线展示+在线预约+贷款计算器......附带完整的搭建教程

在移动互联网高速发展的今天&#xff0c;越来越多的消费者选择通过手机端了解汽车信息、预约试驾、计算贷款等。4S店需要紧跟时代步伐&#xff0c;提供更加便捷、高效的服务。因此&#xff0c;开发一款集合汽车在线展示、在线预约、贷款计算器等多项功能的通用小程序成为市场趋…

数据结构02附录02:哈希表[C++]

图源&#xff1a;文心一言 上机题目练习整理~&#x1f95d;&#x1f95d; 本篇作为线性表的代码补充&#xff0c;每道题提供了优解和暴力解算法&#xff0c;供小伙伴们参考~&#x1f95d;&#x1f95d; 第1版&#xff1a;在力扣新手村刷题的记录&#xff0c;优解是Bard老师提…

语义补全任务2023年论文总结

一、3D Semantic Scene Completion: a Survey 语义场景补全SSC旨在联合估计出一个场景完整的几何和语义信息&#xff0c;假设只需要部分稀疏输入数据。 1、数据集 2、场景表示 Point Cloud&#xff0c;点云是一种方便的、记忆高效的表示方法&#xff0c;它将三维连续世界中的…

网站怎么做google搜索引擎优化?

网站想做google搜索引擎优化&#xff0c;作为大前提&#xff0c;您必须确保网站本身符合google规范&#xff0c;我们不少客户实际上就连这点都无法做到 有不少客户公司自己本身有技术&#xff0c;就自己弄一个网站出来&#xff0c;做网站本身不是难事&#xff0c;但前提是您需要…

OpenShift 4 - 在 OpenShift 上运行物体检测 AI 应用

《OpenShift / RHEL / DevSecOps 汇总目录》 说明&#xff1a;本文已经在 OpenShift 4.14 RHODS 2.5.0 的环境中验证 说明&#xff1a;请先根据《OpenShift 4 - 部署 OpenShift AI 环境&#xff0c;运行 AI/ML 应用&#xff08;视频&#xff09;》一文完成 OpenShift AI 环境…

基于k8s Deployment的弹性扩缩容及滚动发布机制详解

k8s第一个重要设计思想&#xff1a;控制器模式。k8s里第一个控制器模式的完整实现&#xff1a;Deployment。它实现了k8s一大重要功能&#xff1a;Pod的“水平扩展/收缩”&#xff08;horizontal scaling out/in&#xff09;。该功能从PaaS时代开始就是一个平台级项目必备编排能…

Kali改变为中文

更新kali源之后【如果没有更新&#xff0c;可以参考我的Kakli更新源】。 执行下面的命令&#xff1a; # apt-get update && apt-get upgrade && apt-get clean # dpkg-reconfigure locales 如果没有权限&#xff1f;可以通过sudo命令进行授权 1、先取消英文&…

KT6368A双模蓝牙芯片批量生产使用主机芯片KT6358M测试很方便

一、简介 KT6368A双模蓝牙芯片批量生产使用主机芯片测试很方便 KT6368A批量生产怎么办&#xff1f;不可能用手机一个一个的去连吧&#xff0c;太慢了 别慌&#xff0c;这个问题&#xff0c;我们早就考虑清楚了&#xff0c;答案如下&#xff0c;分为两个方法&#xff1a; 详细…

2024数字安全十大技术趋势预测,不容忽视!

2023年是技术爆发的一年&#xff0c;ChatGPT、量子计算、常温超导体争相刷新眼球&#xff1b;2023年是风云变幻的一年&#xff0c;局部战争、网络战、全球经济震荡交替冲击……无数个值得记忆的瞬间&#xff0c;都对网络安全行业产生着深远影响。 通过观察2023年的国际国内环境…

路由器实验总结(静态路由配置)

1、静态路由的配置 R2(config)#int s0/0/0 R2(config)#ip add 192.168.3.2 255.255.255.0 R2(config)# no shut R1(config)#int s0/0/0 R1(config)#ip add 192.168.3.1 255.255.255.0 R1(config)# no shut串口的配置是这样的&#xff0c;静态路由如下&#xff1a; R2(config)#…