春招Leetcode刷题日记-D1-贪心算法-分配问题

news2024/11/16 19:30:51

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

D1-贪心算法-分配问题

  • 何为贪心
  • 力扣455. 分发饼干
    • 思路
    • 代码


何为贪心

1、顾名思义,贪心算法采用贪心的策略,保证每次操作都是局部最优的,从而使最
后得到的结果是全局最优的。
2、举一个最简单的例子:小明和小王喜欢吃苹果,小明可以吃五个,小王可以吃三个。已知苹果园里有吃不完的苹果,求小明和小王一共最多吃多少个苹果。在这个例子中,我们可以选用的贪心策略为,每个人吃自己能吃的最多数量的苹果,这在每个人身上都是局部最优的。又因为全局结果是局部结果的简单求和,且局部结果互不相干,因此局部最优的策略也同样是全局最优的策略。

力扣455. 分发饼干

题目链接:455. 分发饼干
在这里插入图片描述
在这里插入图片描述

思路

1、明确本题目标:用手里的饼干,满足尽可能多的孩子
2、根据上面的目标,我们必须利用好手里的饼干,不能出现,孩子的胃口是1,有2/3/4大小的饼干,我们就要避免"浪费",所以就要给孩子最接近他胃口的饼干
3、这样,每个人都可以获得最接近他胃口的饼干,都不会造成"浪费",才能让更多的人得到饼干,这就是本题的贪心策略。

注意:
1、这种题,明显存在数组,并且我们解题需要使用到数组之中数字关系
2、但是,数组之中,是乱序,一定记住这个大原则:乱序会让时间复杂度最糟糕!
3、所以,第一步就是对两个数组进行排序
4、这样,从胃口最小的孩子入手,当前饼干连这个孩子都满足不了,则说明一定是无用饼干,就看下一个饼干去;若能满足,则一定是最优的。

代码

class Solution {
public:
	int findContentChildren(vector<int>& g, vector<int>& s) {
		sort(s.begin(), s.end());//排序
		sort(g.begin(), g.end());
		int i = 0, j = 0;//分别指向数组g s
		int g_size = g.size(), s_size = s.size();
		int ans = 0;//答案
		while (i < g_size&&j < s_size) {
			if (s[j] < g[i]) {//当前饼干连胃口最小的孩子都满足不了,一定不能满足任何一个孩子
				j++;
				continue;
			}
			else {//当前饼干一定是最适合当前胃口的孩子,并且之后的饼干一定大于了当前饼干造成了浪费,所以选后面的饼干会造成满足孩子的数量减少
				ans++;
				i++;
				j++;
			}
		}
		return ans;
	}
};

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

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

相关文章

神经网络损失函数分布可视化神器

论文名称和地址&#xff1a;Visualizing the Loss Landscape of Neural Netshttps://arxiv.org/pdf/1712.09913.pdf1.1 背景和动机作者主要想研究几个问题&#xff1a;为什么我们能够最小化高度非凸神经损失函数&#xff1f;为什么得到的最小值这个结果具有泛化性&#xff1f;不…

【C语言进阶】预处理与程序环境

目录一.详解编译与链接1.前言2.翻译环境3.剖析编译过程4.运行环境二.预处理详解1.预定义符号2.剖析#define(1).定义标识符(2).定义宏(3).替换规则(4).#和##(5).宏与函数的对比(6).#undef3.条件编译4.文件包含(1).头文件包含的方式(2).嵌套文件包含一.详解编译与链接 1.前言 在…

《流浪地球2》的现实倒影(三):从脑机接口到数字永生

是人&#xff0c;就会死。这个事实听起来或许很悲哀&#xff0c;但电影《流浪地球2》在一开始&#xff0c;就给出了另一种可能性——疯狂科学家进行数字生命实验&#xff0c;通过连接大脑的电极片&#xff0c;将思维意识上传到计算机&#xff0c;从而让人永生。电影开头的这位印…

《Keras深度学习:入门、实战与进阶》CIFAR-10图像识别

本文摘自《Keras深度学习&#xff1a;入门、实战与进阶》。 https://item.jd.com/10038325202263.html 这个数据集由Alex Krizhevsky、Vinod Nair和Geoffrey Hinton收集整理&#xff0c;共包含了60000张3232的彩色图像&#xff0c;50000张用于训练模型、10000张用于评估模型。…

JUC并发编程学习笔记(一)——知识补充(Threadlocal和引用类型)

强引用、弱引用、软引用、虚引用 Java执行 GC(垃圾回收)判断对象是否存活有两种方式&#xff0c;分别是引用计数法和引用链法(可达性分析法)。 **引用计数&#xff1a;**Java堆中给每个对象都有一个引用计数器&#xff0c;每当某个对象在其它地方被引用时&#xff0c;该对象的…

文献阅读:Scaling Instruction-Finetuned Language Models

文献阅读&#xff1a;Scaling Instruction-Finetuned Language Models 1. 文章简介2. 实验 1. 数据集 & 模型 1. 数据集考察2. 使用模型 2. scale up对模型效果的影响3. CoT对模型效果的影响4. 不同模型下Flan的影响5. 开放接口人工标注指标 3. 结论 文献链接&#xff1a;…

【C++】类和对象(一)

目录一、面向过程和面向对象初步认识二、类的引入三、类的定义四、类的访问限定符及封装4.1、访问限定符4.2、封装五、类的作用域六、类的实例化七、类对象的大小八、this指针8.1、this指针的引出8.2、this指针的特性8.3、C语言和C实现Stack的对比一、面向过程和面向对象初步认…

XSS漏洞,通过XSS实现网页挂马

**今天讲下通过XSS实现网页挂马~*&#xff0c;目的是了解安全方面知识&#xff0c;提升生活网络中辨别度 原理&#xff1a; 实验分为两部分&#xff1a; 1、通过Kali linux&#xff0c;利用MS14_064漏洞&#xff0c;制作一个木马服务器。存在该漏洞的用户一旦通过浏览器访问木…

C语言(C文件处理函数和文件指针)

C语言有很多文件操作函数&#xff0c;这里我们挑了一些重要的开始讲&#xff0c;首先说下这些函数都定义在stdio.h头文件中 目录 一.文件指针 二.文件处理函数 1.fopen&#xff08;打开文件&#xff09; 2.fclose(关闭文件) 3.getc和putc(从文件指针读取字符) 4.I/O工作…

「C++控制台生存游戏」暗黑体素 DarkVoxel 控制台版

“《只有作者能看懂的一款游戏》” 刚进高中前开始写的一款抽象的生存游戏 BUG很多请见谅 ###【点击此处&#xff0c;免费畅玩】### 类似泰拉瑞亚的一款游戏 『暗黑体素 DarkVoxel』 直接上图&#xff01; 用控制台写出如此奇葩的生存游戏&#xff0c;可谓世间少有。 操作…

2022黑马Redis跟学笔记.实战篇(二)

2022黑马Redis跟学笔记.实战篇 二实战篇Redis开篇导读4.1短信登录4.1.1. 搭建黑马点评项目一、导入黑马点评项目二、导入SQL三、有关当前模型四、导入后端项目相关依赖配置redis和mysql连接项目组成概述关闭Linux防火墙五、导入前端工程六、 运行前端项目4.1.2. 基于Session实现…

选购交换机的参数依据和主要的参数指标详解

如何选购交换机&#xff1f;用什么交换机&#xff1f;在选购交换机时交换机的优劣无疑十分的重要&#xff0c;而交换机的优劣要从总体构架、性能和功能三方面入手。交换机选购时。性能方面除了要满足RFC2544建议的基本标准&#xff0c;即吞吐量、时延、丢包率外&#xff0c;随着…

网络是怎么连接笔记(一)WEB浏览器

文章目录介绍生成HTTP请求消息向DNS服务器查询WEB服务的IP地址全世界DNS服务器的大接力委托协议栈发送消息介绍 互联网整个消息传递流程 生成HTTP请求消息向DNS服务器查询WEB服务的IP地址然后DNS服务器进行查询IP地址委托协议给对应IP发送消息 生成HTTP请求消息 整个网络发…

Spring面试重点(三)——AOP循环依赖

Spring面试重点 AOP 前置通知&#xff08;Before&#xff09;&#xff1a;在⽬标⽅法运行之前运行&#xff1b;后置通知&#xff08;After&#xff09;&#xff1a;在⽬标⽅法运行结束之后运行&#xff1b;返回通知&#xff08;AfterReturning&#xff09;&#xff1a;在⽬标…

2023年前端面试知识点总结(CSS篇)

近期整理了一下高频的前端面试题&#xff0c;分享给大家一起来学习。如有问题&#xff0c;欢迎指正&#xff01; 1. 对CSS盒模型的理解 CSS3的盒模型有两种盒子模型&#xff1a;标准盒子模型、IE盒子模型 盒模型都是由四个部分组成的&#xff0c;分别是content&#xff08;内容…

layui框架学习(6:基础菜单)

菜单是应用系统的必备元素&#xff0c;虽然网页中的导航也能作为菜单使用&#xff0c;但菜单和导航的样式和用途有所不同&#xff08;不同之处详见参考文献5&#xff09;。Layui中用不同的预设类定义菜单和导航的样式&#xff0c;同时二者依赖的模块也不一样。本文主要学习和记…

Vue (3)

文章目录1. 数据代理1.1 回顾1.2 开始2. 事件处理2.1 v-on:click 点击事件2.2 事件修饰符2.3 键盘事件3. 计算属性3.1 插值语法实现3.2 methods实现3.3 计算属性实现4. 监视属性4.1 深度监视4.2 监视属性的简写形式4.3 watch 与 computed 对比1. 数据代理 在学习 数据代理 时 先…

SQL数据查询——单表查询和排序

文章目录一、单表查询1.查询列1&#xff09;查询全部列指定列2&#xff09;查询经过计算的值3&#xff09;列的别名2.查询元组1&#xff09;消除取值重复的行(DISTINCT)2&#xff09;条件查询(WHERE)3.空值参与运算4.着重号二、排序(ORDER BY子句)一、单表查询 单表查询指仅涉及…

Webpack的知识要点

在前端开发中&#xff0c;一般情况下都使用 npm 和 webpack。   npm是一个非常流行的包管理工具&#xff0c;帮助开发者管理项目中使用的依赖库和工具。它可以方便地为项目安装第三方库&#xff0c;并在项目开发过程中进行版本控制。   webpack是一个模块打包工具&#xff…

C语言深度剖析之程序环境和预处理

1.程序的翻译环境和执行环境 第一种是翻译环境&#xff0c;在这个环境中源代码被转换为可执行的机器指令 第二种是执行环境&#xff0c;它用于实际执行代码 2.翻译环境 分为四个阶段 预编译阶段 &#xff0c;编译&#xff0c;汇编&#xff0c;链接 程序编译过程&#xff1a;多个…